我打算编写一个 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/