PHP:包括模板的文件
我正在尝试构建自己的简单模板处理程序,以便能够轻松地将文件嵌套和组合到变量中,并在必要时调用这些变量,如下所示:PHP:包括模板的文件,php,model-view-controller,templates,view,Php,Model View Controller,Templates,View,我正在尝试构建自己的简单模板处理程序,以便能够轻松地将文件嵌套和组合到变量中,并在必要时调用这些变量,如下所示: $partial['header'] = 'header.php'; foreach($partial as $part => $view ) { $output[$name] = file_get_contents( APPPATH .'views/' . $view . '.php' ); } extract($output, EXTR_PREFIX_ALL,
$partial['header'] = 'header.php';
foreach($partial as $part => $view ) {
$output[$name] = file_get_contents( APPPATH .'views/' . $view . '.php' );
}
extract($output, EXTR_PREFIX_ALL, 'template' );
include 'mytemplate.php';
mytemplate.php
模板文件:
<?php
echo $template_header; // Shows the header.
在中读取脚本显然不是最好的方法。你必须eval
为了记录在案:
include($filename);
在功能上与:
eval("?>" . file_get_contents($filename));
忘掉它。“eval是邪恶的”模因只是一个模因。因此,如果您想保持appraoch,可以使用eval(“?>$template_header”)代码>而不是echo
另一种方法是跳过文件读取,让您的$template\u vars
包含文件名而不是其内容。然后做一个普通的include($template\u header)代码>更难看是可能的,但做的正是你想要的:
function custom_get_content($filename){
if (is_file($filename)) {
ob_start();
include $filename;
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
}
那么你可以称之为:
foreach($partial as $part => $view ) {
$output[$name] = custom_get_content( APPPATH .'views/' . $view . '.php' );
}
我从PHP手册中的一条评论中复制了它,但是再也找不到了(这就是为什么它可能太难看了:D)FYI-a我相信上面的代码会导致路径为header.PHP.PHP
,因为$view
将是header.PHP
。PHP
被附加在文件\u get\u contents
中,是的,没错。当我将代码复制到SO.Wow上时,我监督了这一点,在编辑时接受了@工业:告诉我编辑是否取消您的决定;)不,这正是我想要的!:)非常感谢Shikiryu!