php - 模板语言与纯 PHP

标签 php templates

我打算编写一个 CMS,但现在我正在写下我所有的想法,并试图在开始之前弄清楚我的所有概念。我纠结的一件事是是使用模板语言并解析网站页面,并用内容项替换模板标签,还是直接使用 PHP 开发网站并让 CMS 生成有用的数据结构。例如:

{navigation: products}

对比

foreach($cms_label['products'] as $product) {

    echo '<li class="product_nav">'.
         '<a href="products/{$product.id}">{$product.name}</a>'.
         "</li>\n";

}

前者更简洁,但它需要发明一种语言,并在显示前解析每个页面。后者不太干净,但我认为如果 CMS 只为所有代码提供数据,它会工作得很好。但是,这会被认为是将逻辑与表示混合在一起吗?我考虑过的另一种选择是使用类似于模板标签的 PHP 函数:

<?php navigation('products'); ?>

你有什么想法?

请记住,我不需要做比在特定位置包含页面或写出无序列表更复杂的事情;其余由 CSS 处理。

最佳答案

PHP 的模板语言是一种称为“Inner-Platform Effect”的反模式示例。 Smarty 是 PHP 模板框架的一个例子,但即使是关于 Smarty 的书的作者 Hasin Hayder 也说 Smarty is dead并且没有必要再使用它了。

开发模板语言可能有很好的理由,例如,如果您有非编码设计师或内容编辑人员使用您的 CMS,并且您不想让他们被 PHP 的复杂性压垮(或让他们编写可能破坏您的网站的代码)。

但是您还没有将其描述为目标,所以我认为在这种情况下最好使用 PHP 作为您的页面模板语言。它会减少工作量,因为您不必开发自己的新语言,并且它会为您需要特定类型的动态内容的罕见情况提供更大的灵 active 。

不要编写 PHP 函数来封装 HTML 输出 block 。相反,使用 include() 来引入 HTML 片段。这种技术有时称为“局部”。

您还可以使用 Symfony、Kohana、Solar、CodeIgniter 或 Zend Framework 等 MVC 框架来帮助您遵守将 PHP 模板代码与其余应用程序代码分开的纪律。

关于php - 模板语言与纯 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424268/

相关文章:

c++ - 使用友元类减少编译时间和依赖性

C++ vector<T> 其中 T 是类中的结构

java - 再次调用同一个 Play 模板时,变量的作用域如何?

php - SELECT SUM 带日期变量,用于 prestashop

php - 如何在php中将对象数组转换为键值对

php - 在 CSV 和 TXT 上验证标题

C++编译时类的子类列表

C++ 使用函数模板查找任何输入数据类型的中间值?

php -\n 在我的 fwrite() 中不起作用

php - 使用 foreach 退回数组 (PHP)