在大多数需要使用PHP的情况下,编写一个简单的PHP插件来实现你所需的功能可能更为清晰明了。
我的问题是:是否有必要在ExpressionEngine模板中使用PHP?或者这被认为是糟糕的做法?如果你是一个继承了我编码的站点的开发人员,当你看到模板中的PHP时,你会感到不安吗?
这同样可以是关于eval()
的优点的问题,以及是否应该使用它。大部分针对这类问题的答案同样适用于这里。
我认为在模板中启用PHP始终是个坏主意。在最好的情况下,它不是一个可怕的想法,但总有更好的选择。即使是看似无害的代码片段,自定义插件也肯定是更好的方法。我认为最有可能使用它的人最不合格。就我个人而言,在我开始使用EE构建网站时,我的PHP技能范围介于“完全无能”和“知道足以危险”的水平之间。那时,如果我遇到了EE代码的限制,我通常会通过一些内联PHP实现解决方案,部分原因是开发自定义插件的想法似乎太令人生畏,部分原因是点击一个小的“启用PHP”单选按钮非常简单。几年后,每当我需要更新其中一个站点时,我肯定会感到不安。以下是在模板中使用PHP的一些副作用:
使用Pkg.io等工具,你可以在30秒内完成插件的基础工作。它需要一点额外的努力,但收益是值得的。
假设我是80%的使用ExpressionEngine构建网站的人之一,可能认为自己是设计师或者没有PHP经验:
在ExpressionEngine模板中使用PHP是否可以接受?
不可以,请不要这样做!
这被认为是不好的做法吗?
是的,基本上是这样。
如果你是一个开发者,继承了我编写的网站,你会不会因为看到模板中的PHP而感到不安?
肯定会感到不安,甚至可能会咒骂一下。
好的,现在假设我是那20%认为自己是EE开发人员或有更多编程经验而不是设计师的一部分:
在ExpressionEngine模板中使用PHP是否可以接受?
偶尔使用是可以接受的。例如,您可能需要为此Stash setup打开PHP。这实际取决于您试图实现的复杂性。大多数事情都应尽可能放入Add-on中,而“懒惰”并不算是使用模板中的PHP可接受的时间。
还是说这被认为是糟糕的实践方式?
ExpressionEngine和Codeigniter提供了一个很好的基础来构建Add-on,最佳实践包括尽可能进行适当的分离。这包括从PHP和Templates中的分离;通常是如此。
如果可能,应该像之前提到的那样将其放入Add-on中。话虽如此,除了知道可能会对安全造成影响、给客户以及其他开发/设计人员带来未来的麻烦外,没有什么限制您在模板中使用PHP。
如果你是一个接手我编码的网站的开发者,如果你在模板中看到PHP代码,你会感到不安吗?我建议您考虑使用类似于phpstringfun插件的东西。这样可以分离不同的内容,但仍然可以在EE标签中工作。
如果是小量且有良好文档支持的PHP代码,可以将其用于模板中,但请尽可能保持简单和抽象。