我正在设计自己的MVC模式,以简化创建主页的过程。我的模板系统需要我的控制器类输出我的视图。这意味着我必须通过php函数输出文件。我一直在寻找一段时间,似乎无法找到解决方案。
我如何通过PHP函数运行一个表示某些源代码(“<?”,“<?php”,“?>”等)的字符串作为php? Eval不会把我的< ?标志(我因某种原因读到这个功能是垃圾)。
答案 0 :(得分:24)
您可以执行php代码并收集输出,如下所示:
ob_start();
include "template.phtml";
$out1 = ob_get_clean();
答案 1 :(得分:4)
将“echo file_get_contents()”替换为“include()”,因为GordonM建议完全按照需要工作。因为我太新了但不能满足我的需求这是对标题问题的直接回答。
答案 2 :(得分:3)
只需包含()文件就可以了。我没有深入挖掘源代码,但我很确定Zend Framework是如何实现模板的。
答案 3 :(得分:0)
嗯,eval本身并不是垃圾,如果你不小心你在eval里面允许的东西,那就很容易创建一个安全漏洞(也许这可能对你的可读性有害)代码)。
至于<?
标志,那是因为eval需要php代码,所以如果你不想将php与普通输出混合,只包括结束?>
标签。
但是,一般情况下,您可以更好地实现模板,尝试查看输出缓冲。
答案 4 :(得分:0)
$code = '<?php
function GetBetween($content, $start, $end) {
$r = explode($start, $content);
if (isset($r[1])){
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}';
function _readphp_eval($code) {
ob_start();
print eval('?>'. $code);
$output = ob_get_contents();
ob_end_clean();
return $output;
}
print _readphp_eval($code);