看了很多的源码和后台,有的会做模板编辑,做一写常量,变量之类,或者是直接写PHP代码,那么他们再输出数据的时候,是怎么输出的的呢?
例如 我把数组写入到数据库里面
<?php
$arr=[
'text'=>"空气工作室"
];
?>
这个时候,很多犯难了吧
你想直接输出
<?php
$arr['text'];
echo $arr['text'];//这样还是输出字符串,怎办呢
?>
目前就借鉴帝国CMS的做法,用文件输出法,再来读取
将PHP代码写入到文件
$arr=[
'text'=>'空气工作室'
];
$dir=__DIR__.'/';
$text="<?php\n".' $arr='.var_export($arr,true).";\n".' echo $arr["text"];?>';
file_put_contents($dir.'/tmp/a.php',$text );
这里随便写个存入文件
<?php
<?php
$arr=array (
'text' => "空气工作室"
);
echo $arr["text"];
现在要输出了
$dir=__DIR__.'/';
include_once($dir.'/tmp/a.php');
$string = ob_get_contents();
ob_end_clean();
echo $string;
ob_get_contents();
- ob_start()把输出那同输出到缓冲区,而不是到浏览器。
- ob_get_contents得到缓冲区的数据。
- ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。
- ob_end_clean会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容
总结
将动态代码写入临时文件里面,然后引入调用输出。
网友评论