我要写一个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'); ?>
你怎么看?
PHP的模板语言是一个名为“
Inner-Platform Effect”的反模式的示例. Smarty是PHP的模板框架的一个例子,但即使是Hasy Hayder,一本关于Smarty的书的作者说,Smarty is dead并没有必要再使用它了.
开发模板语言可能有很好的理由,例如,如果您使用非编码器设计者或使用CMS的内容编辑器,并且您不希望以PHP的复杂性压倒他们(或允许他们编写可以打破你的网站).
但是您没有将其描述为目标,所以我假设使用PHP作为页面模板语言在这种情况下是最好的.这将减少工作量,因为您不必开发自己的新语言,并且将为您需要特定类型的动态内容的常见情况提供更大的灵活性.
不要写PHP函数来封装HTML输出块.相反,使用include()来拉入HTML的片段.这种技术有时被称为“部分”.
您还可以使用Symfony,Kohana,Solar,CodeIgniter或Zend Framework等MVC框架来帮助您保持对您的PHP模板代码与其余应用程序代码的分离.