我有一个类,它可以在连接所有模板后收集模板并显示最终输出。
class Template{
$private $output = '';
public function Load_Template($template, $data = null){
ob_start();
include($template);
$this->output .= ob_get_clean();
}
public function Display($add_footer = true){
echo $this->output;
}
}
现在,目前我的模板看起来像这样。
<h1><?php echo $data['name']; ?></h1>
或涉及循环的更复杂的看起来更像
<ul>
<li>
<?php foreach($data as $user){ ?>
<h1><?php echo $user['name']; ?></h1>
<?php } ?>
</li>
</ul>
实际上数据的数据多于其中的数据,但我相信你们明白这一点。 现在,我听到人们说最好有这样的模板
<h1>{name}</h1>
或
<ul>
<li>
<h1>{name}</h1>
</li>
</ul>
然后使用str_replace函数......现在,如果我使用foreach循环,我将如何完成这样的事情...我应该改变我的课程,如果是这样,我可以得到一些关于如何...你们建议使用模板吗?
答案 0 :(得分:1)
对于这些“{tag}”类型模板,您有一个非常受欢迎的引擎:Smarty
答案 1 :(得分:1)
Smarty太多余了!你的班级具有剪切页面的功能就足够了。
答案 2 :(得分:0)
每种模板语言都有自己的方法来解决问题。你可以,而不是从头开始编写自己的模板语言,使用像Smarty那样的标准语言之一。
如果你自己编写,你至少需要一个能让你表达循环和条件的结构。我之前看过的一个简单方法就是:
<!-- BEGIN conditional_or_looped_block_named_foo -->
Stuff that may appear zero or more times
<!-- END conditional_or_looped_block_named_foo -->
当然,语法差别很大,从一种语言到另一种语言,但基本方法是相同的:有一些标记围绕你想要隔离和重复(或省略)的代码部分。
答案 3 :(得分:0)
我通过快速搜索找到它,它有代码来执行您所要求的操作,它只使用您创建的变量进行搜索和替换。
所以你的foreach()调用不会回显但存储在变量中,然后用模板中的{users}替换该变量。