何时使用PHP模板引擎

| 我正在用php建立一个网页很多的网站,我们是9人组成的团队。因此,我们只想探索一下什么时候应该使用PHP模板引擎,什么时候不应该使用。因此,我对使用PHP模板引擎的利弊感兴趣,因此我可以决定是否在我的情况下使用它。     
已邀请:
PHP是一种模板语言。 到目前为止,根据我在各种模板系统上的经验,结论很简单:不使用任何模板。 而是编写PHP,因为它应该被编写!除了
echo
for
/
foreach
之外,请勿在.html内执行任何操作。如果您基于MVC之类的设计模式编写代码,这将变得更加明显:仅在内部
echo
foreach
并解释前端,它们切勿混淆mess5ѭ和
?>
内的代码。 从那时起,它对我一直有效。对于我来说,向他们解释Smarty通常比解释永远不搞PHP更加困难。 模板系统还会增加服务器的重量(有时只是一点点,有时您可能会感觉到)。乍一看似乎过分优化,但我宁愿保持其尽可能简单。 注意: 例如,Smarty很难在.html文件中发现,因为我知道的唯一Smarty语法突出显示器是NetBeans插件,并且它是漂亮的Beta。另一方面,PHP在任何适当的编辑器中都突出显示了其语法。前端也更容易发现而不被弄乱。 包起来 缺点(用于模板系统) 增加服务器负载(更轻或更重,没关系-可以看到) 引起不良做法(逻辑包含在模板语言语法中) 模板语言的语法没有语法高亮显示-很难发现(对于编码器和前端) 花时间学习并将其教给前端 很难向前端团队解释(我已经多次向基本的PHP教授前端-尽管还有更多人已经能够编写自己的“入门级” PHP;我从来没有教过Smarty前端,所以他们可以
{$var}
以外的东西) 使您避免出现真正的问题:逻辑和表示分离! 为您的项目增加额外的重量 优点(用于使用模板系统) 极度无聊(可能是唯一有效的论点) 模板系统更换 逻辑和表示分离(我建议为该任务及其为其他开发领域提供优点的MVC:更容易维护,抽象数据库等) 强迫自己仅在视图中编写
echo
并进行迭代以进行回显:
foreach
for
应该满足99%的迭代需求;您也可以使用
while
do while
    
对我而言,在决定是使用单独的模板引擎还是仅将PHP用于模板时,它总是归结为: 何时使用模板引擎 当您必须限制(沙盒)可以在模板中运行的代码时。 何时不使用模板引擎 所有其他时间。     
PHP纯粹主义者将告诉您PHP本身就是模板引擎。我认为自己在这件事上是纯粹主义者,建议只使用PHP。它甚至为if和loop块提供了一种替代语法,这些语法非常适合模板样式的可读性。 但是,有些人仍然喜欢使用模板引擎,例如Smarty。如果您确实选择该路线,则需要考虑很多因素: 谁来维护模板?如果维护模板的人员已经知道PHP,那么让他们学习新的伪PHP模板引擎毫无意义。如果他们不了解PHP,那么根据他们的背景,它仍然是有问题的,因为大多数模板引擎只是实现了与PHP标签不同的语法(例如
<% %>
) 您的模板会变得多么复杂?有些模板引擎对模板的操作有严格的限制(迫使您将所有内容放入控制器中,有些几乎到无用或不必要的跳跃),而另一些则与原始PHP一样宽松(许多会认为这违反了模板引擎的目的)。 效率和速度有多重要?模板引擎会增加开销。期。将自定义标签转换为PHP标签会占用资源。它们的添加量和重要程度取决于许多因素(包括发动机本身)。如果您需要从网站上获得更高的速度,那么我将首先推荐模板引擎。 正如我所说,我也建议使用PHP作为模板“引擎”,但要注意一些陷阱。主要是,在模板中添加不必要的逻辑确实很容易。确保您有一个规则,仅包括
echo
for/foreach
和基本
if
块(例如
if is_admin()
等),并确保将其强制执行。     
绝对没有理由使用php模板引擎。 逻辑和视图的分离是一种义务。这并不意味着使用模板引擎。 使用模板引擎,您必须学习与php无关或与其他无关的内容。每个不得不修改聪明人或其他模板来源的人都可能会被那些无用和阻碍混乱的东西所烦扰。 PHP为您的模板提供了支持,并为您提供了使用它的各种方式的所有可能性。 借助12条建议,PHP ist足够安全。如果不了解背后的技巧,使用模板引擎不会感到安全。 Smarty无法保护公共可编辑模板。 寻找设计模式。查看助手和MVC。使您的代码简单且结构合理意味着比smarty / any-template-engine更聪明...     
我建议在显示逻辑和其他数据获取操作之间使用某种良好的分离方法。实现MVC是一种很好的方法,大多数PHP框架都提供了MVC框架。 这样一来,每个人都可以编写更加简洁的代码,并使模板保持简单,从而使技术水平较低的人员(例如前端设计人员)可以进入并对其进行编辑。     
当在多个网页上有大量重复的演示文稿并且您希望将业务和应用程序编程以及逻辑与演示文稿分开时,应使用模板引擎。 这种分离的好处是: 更紧密,更易读且无错误的应用程序逻辑 更改表示而不更改核心逻辑文件 在运行时动态更改演示 虽然从技术上讲php本身就是模板语言,但将其描述为内置模板的Web编程语言更为准确。另一方面,大多数模板引擎也会使用内置了编程指令的模板。这意味着php中的过多模板与模板中的过多编程之间存在合理的平衡。平衡越好,您的编码就越容易,您的应用程序将越灵活和可扩展。 以php代码为例,该代码检索最近的10个博客文章,并在调用该代码时将其写到博客的DIV标签中。如果复制了相同的代码以创建RSS feed,则您将在两个位置具有相同的代码,因此需要在逻辑更改时将其保留在多个位置。 如果确切地说是在模板引擎的控制下调用了完全相同的代码,则根据提供的RSS / XML模板还是HTML模板,您将具有相同的代码写入两种不同形式的输出。如果模板引擎编写得很好,则php代码既不知道也不在乎提供给它什么类型的模板。 php也可以输出HTML,XML,SQL,PDF或文本! 随着时间的推移,在Classic ASP和PHP中实现了许多网站之后,我发现一个好的模板引擎为我节省了很多时间的编程和调试工作,并且因为没有用于Classic ASP的真正模板引擎,所以我写了KudzuASP来解决这个问题。您可以在我的网站上找到相关的项目KudzuPHP,它是免费的。还有一个基于它的Wordpress插件。     
您应该始终使用某种机制将标记与代码分开,就像您不应该将CSS嵌入HTML一样。有太多的选择无法给您一个简单的答案。有一些模板引擎,例如smarty或fasttemplate,然后有带有模板系统的框架(例如cake,代码点火器等)。您应该根据需要对它们进行单独评估     
我只是将php用于您的模板引擎。不会有类似smarty的额外负担。他们只需要了解基本的php。您可以使用
.phtml
扩展名来表示模板文件...为什么要使用模板引擎? 为了清楚起见,在
.phtml
模板文件中应仅包含
echos
foreachs
,而在其中不应执行任何核心代码。     
您是否尝试过图章模板引擎? 它仍然会增加服务器负载;但是我认为它解决了模板引擎的其他缺点。与Smarty和所有其他PHP模板引擎不同,StampTE完全没有逻辑。您只可以使用正确的HTML注释标记区域(大多数设计者和前端工程师已经具有这些标记只是为了提高可读性)。它依靠这些标记为后端开发人员提供剪切和粘贴功能。后端PHP程序员可以从模板(如纸模型)复制并粘贴这些区域,并使用它来构建网站和Web应用程序GUI。而且,它们本身具有非常友好的API。例如,切一个像这样的区域:
   <!-- cut:siteMenu -->
       <nav>
          <ul>
            <li>...</li>
          </ul>
       </nav>
   <!-- /cut:siteMenu -->
他们可以使用面向对象的表示法:
$template->getSiteMenu()->setLink( ... ); etc..
我认为这真的很酷。 http://www.stampte.com     
确实,分离和重用是这里的关键词。 在团队中开发和划分工作负荷的最佳方法是Web Designer(集成商/ html-ist等)没有机会破坏编程部分(数据库,文件,会话,语法错误等)时。上)。 我建议使用FigDice模板引擎,该引擎在逻辑(程序,数据库,文件,算法等)和Presentation(视图和它们所呈现的信息)之间实现了非常整洁的分离。 FigDice支持课程宏(文件的可重用部分),包含,迭代和许多其他功能,并且还提供了一种独特的方法来实现Presentation / Logics分离,并且反转了数据提供者的控制权(视图将他们需要显示的信息,而不是让控制器将数据推送到模板中(实际上,几乎每个模板引擎都是这种情况)。 这使HTML设计人员可以真正地决定他要呈现的内容以及何时和如何呈现,而不会破坏代码。 我很高兴获得反馈和评论。 谢谢     

要回复问题请先登录注册