相关疑难解决方法(0)

我为什么要在PHP中使用模板系统?

我为什么要在PHP中使用模板系统?

我的问题背后的原因是:PHP本身是功能丰富的模板系统,我为什么要安装另一个模板引擎?

到目前为止我找到的唯一两个职业选手是:

  1. 更清晰的语法(有时)
  2. 模板引擎通常不够强大,无法实现业务逻辑,因此它会强制您分离关注点.使用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 template-engine smarty

58
推荐指数
6
解决办法
1万
查看次数

PHP模板 - 使用PHP

您见过的最优雅的模板(最好是纯PHP!)解决方案是什么?

具体来说我对处理感兴趣:

  1. 在重复块中检测它是第一个还是最后一个元素
  2. 轻松处理奇数/偶数情况,如斑马条纹表或类似情况
  3. 其他模数逻辑,你每隔一段时间做一些事情.

我正在寻找一些让这不那么痛苦的东西:

<?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标签让我感到畏缩.

php templates

20
推荐指数
5
解决办法
2万
查看次数

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.)

编辑

呃呃,似乎我的神经紧张.一些澄清:

  1. 我是这个项目中唯一的开发人员.
  2. 我如何将代码与HTML混合?我的库中的"html_tag"对象非常类似于DOM中的节点."render"方法是创建html的方法(精美缩进,我必须添加),但我不会在任何地方写任何开始或结束标记.
  3. 我为几个任务创建小对象.这些对象具有构建标记对象的方法; 然后将这些结果对象插入表格或页面中.
  4. 我是否提到我坚持使用PHP?
  5. 我的库有一些原始的访问方法来查找对象.因此,26288中发布的迭代器示例可以相对轻松地实现.
  6. 我并不担心表现(但是.)我一直认为这是一个非常好的问题,但我还没有.

php tag-soup

-3
推荐指数
1
解决办法
2991
查看次数

标签 统计

php ×3

smarty ×1

tag-soup ×1

template-engine ×1

templates ×1