我为什么要在PHP中使用模板系统?
我的问题背后的原因是:PHP本身是功能丰富的模板系统,我为什么要安装另一个模板引擎?
到目前为止我找到的唯一两个职业选手是:
......与利弊相比,两者都可以忽略不计.
小例子:
PHP
<h1><?=$title?></h1>
<ul>
<? foreach ($items as $item) {?>
<li><?=$item?></li>
<? } ?>
</ul>
Run Code Online (Sandbox Code Playgroud)
Smarty的
<h1>{$title}</h1>
<ul>
{foreach item=item from=$items}
<li>{$item}</li>
{/foreach}
</ul>
Run Code Online (Sandbox Code Playgroud)
我真的没有看到任何差异.
您见过的最优雅的模板(最好是纯PHP!)解决方案是什么?
具体来说我对处理感兴趣:
我正在寻找一些让这不那么痛苦的东西:
<?php
$persons = array('John', 'Jack', 'Jill', 'Jason');
?>
<?php $i = 0; ?>
<?php if (isset($persons)): ?>
<ul>
<?php foreach ($persons as $name): ?>
<li class="<?= ($i++ % 2 === 0) ? 'odd' : 'even' ?>"><?= $name ?></li>
<?php endforeach ?>
</ul>
<?php endif ?>
Run Code Online (Sandbox Code Playgroud)
是否真的需要上面的混乱来创建这样的东西?
<ul>
<li class="odd">John</li>
<li class="even">Jack</li>
<li class="odd">Jill</li>
<li class="even">Jason</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
只有我发现上面几乎可怕吗?
所有那些启动和关闭php标签让我感到畏缩.
我无法忍受与代码混杂的HTML.我几乎看不到其中一个模板而不会感到恶心.我知道,当你拥有一支"网页设计师"大军时,你是唯一的开发者,使用一些模板系统是有意义的.我经常听说Smarty.但就我而言,它一直是更多工作的源泉.
无论如何,这次我要单独进行,所以我不想用谚语极点触摸HTML模板.所以我目前正在做的是这样的:
<?php
$page = new html_page('My wonderful page');
$page->add_contents(new html_tag('p', 'It works', array('id' => 'helloworld', 'class' => 'somecssclass')));
echo $page->render();
?>
Run Code Online (Sandbox Code Playgroud)
一切都属于一个很好的对象层次结构,这是好的和花花公子.当然我有很多小类,我正在考虑使用动态类(例如,'html_a'会自动创建一个'a'类型的html_tag对象.)
现在,我的问题是:似乎没有其他人这样做.为什么?我在那里太远了,我的虚弱,缺氧的头脑从大局中遗漏了什么?
(我清楚地记得一个开源库正是这样做的,但是再也找不到了.所以除非我实际想象的东西,否则我不是唯一一个想到这种渲染HTML方法的人.)
你有什么想法吗?(请不要推荐另一种语言;我最喜欢的语言是Perl,所以我可以轻松地通过你:-).我坚持使用PHP.)
编辑
呃呃,似乎我的神经紧张.一些澄清: