如何使用PHP更好地使用Smarty?

nop*_*ole 7 php template-engine templating smarty

我发现使用Smarty和PHP,有时需要额外的时间

1)使用与PHP本身完全不同的语法
2)需要检查小案例,因为文档没有给出更精细的细节,例如"escape"

http://www.smarty.net/manual/en/language.modifier.escape.php

它没有说转义:"引号"仅用于双引号或单引号,因此您需要编写代码来测试它.同样对于逃避的情况:"javascript" - 无法确切地告诉它是什么以及如何被转义.

3)对于复杂的东西,需要编写辅助函数或修饰符,因此需要创建新文件并最终再次在PHP中执行.

顺便说一句,使用Smarty是否提供了单独使用PHP的良好速度?谢谢.

Noa*_*ich 22

首先,PHP是一种模板语言.当您谈到为基于PHP的Web应用程序使用模板系统时,请记住这一点.

我曾经听过使用任何模板引擎的唯一"真实"论点是,它们为模板操作提供了一种更简单的语言,如果你有不熟悉PHP的模板设计师和你不信任的模板设计人员,这可以很方便学会谨慎使用PHP.

关于这些论点,我认为如果你的模板设计师没有能力学习足够的PHP来进行模板设计,你应该考虑寻找新的模板设计师.此外,PHP本身为控件语句提供了不同的语法,您可以在模板中使用这些语法,而不是在代码中使用.例如:

<? foreach($array as $key => $val): ?>
    <?= $val ?>
<? endforeach; ?>
Run Code Online (Sandbox Code Playgroud)

VS:

<?php
    foreach($array as $key => $val) {
        echo $val;
    }

?>
Run Code Online (Sandbox Code Playgroud)

就个人而言,我认为模板引擎出现在PHP中,因为:

  1. 这是其他语言的方式
  2. 更好的PHP程序员意识到他们需要一种方法来强制表示和应用程序逻辑之间的分离,模板是一种简单的方法.

第一个原因是有点傻.第二个原因可以通过一点点自我控制来克服,甚至可以通过对应用程序中分离层的必要性的基本理解来克服.MVC设计模式是解决此问题的一种方式.至于执行一些自我控制,我的规则是只使用必要的循环和if语句以及过滤,转义,格式化屏幕输出的函数.

在广泛使用Smarty之后,我可以诚实地说,它总是让我有更多的障碍来克服困难而不是解决方案.如果有的话,切换到基于PHP的模板实际上减少了模板和代码的开发时间.

  • 然而,他们添加了{PHP} {/ PHP}标签,因此我可以在那里完成所有数据库查询;) (4认同)

Eva*_* P. 6

我不喜欢模板引擎.我发现它们对PHP来说非常有损且资源密集.

使用MediaWiki,在1.6.x版本左右,我们默认使用Smarty,只使用PHP的内置模板,性能得到很大改善.

我发现大多数人想用模板系统做的事情(添加链接,更改颜色,删除文本或页面的部分)都可以通过一个简单的事件挂钩系统来完成.

Laconica是一个开放的微博平台,默认情况下没有任何模板.我们为那些为模板而疯狂的人提供插件.