PHP中的东西,如果存在某个变量,我想显示内容。
例如,对于当前评论,我想检查作者是否已经对此回复进行了投票,因此代码将如下所示:
<?php if (isset($replies)): ?>
<?php foreach ($replies as $reply): ?>
<?php if (isset($already_voted)): ?>
<?php foreach ($already_voted as $vote): ?>
// if vote['id'] == $reply['id'], echo what they have already voted
<?php endforeach; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
如果不使用像smarty那样臃肿的模板引擎,这样做会更简单吗?
(请不要评论......是'PHP'本质上是一个模板引擎'或者其他任何内容)。
答案 0 :(得分:2)
我建议为模板使用模板引擎(我推荐PHPTAL),但是你已经非常具体地询问了不使用引擎的方法。你可以简单地简化一下你所拥有的PHP代码,而不是那么多:
<?php
if (isset($replies)) {
foreach ($replies as $reply) {
if (isset($already_voted)) {
foreach ($already_voted as $vote) {
// if vote['id'] == $reply['id'], echo what they have already voted
}
}
}
}
当然,这与你拥有的几乎完全相同,它只使用更少的字符。通过缩进跟踪打开的代码块。
请注意,至少根据我的理解,模板的重点是重用。您希望能够在尽可能多的页面上使用相同的模板,或至少部分模板(例如宏)。对于某些静态内容,这可能并不总是可能,但这就是关键词尽可能的原因。正如你应该对任何代码所做的那样,重用你所能做的。
使用模板系统可以更轻松地将视图与逻辑分开。你可以创建php模板(正如你所做的那样),但我认为它缺乏清晰度,而且在模板中进行处理要比以前更容易。在PHP中没有任何类型的系统创建可重用模板也更加困难[需要引证]。你可以创建自己的,但是已经有一些很棒的了。
答案 1 :(得分:1)
PHPLib(AFAIK GNU许可证开源)有一个模板类,它是一个包含文件,非常轻巧,易于使用:
答案 2 :(得分:0)
正如您所指出的,PHP本身就是一个模板引擎,您可以使用简单的if语句来完成。
或者,你可以创建一个这样的功能,就像对WordPress模板标签一样。