在ExpressionEngine模板中使用PHP有什么好处吗?

5
我听到了很多不同的声音。当你卡住时,启用模板中的PHP并且通过解决问题来实现目标通常是一种简单的方法。但是,这几乎总是会引入潜在的安全问题,并使你的模板变得混乱不堪。
在大多数需要使用PHP的情况下,编写一个简单的PHP插件来实现你所需的功能可能更为清晰明了。
我的问题是:是否有必要在ExpressionEngine模板中使用PHP?或者这被认为是糟糕的做法?如果你是一个继承了我编码的站点的开发人员,当你看到模板中的PHP时,你会感到不安吗?
3个回答

6

这同样可以是关于eval()的优点的问题,以及是否应该使用它。大部分针对这类问题的答案同样适用于这里。

我认为在模板中启用PHP始终是个坏主意。在最好的情况下,它不是一个可怕的想法,但总有更好的选择。即使是看似无害的代码片段,自定义插件也肯定是更好的方法。我认为最有可能使用它的人最不合格。就我个人而言,在我开始使用EE构建网站时,我的PHP技能范围介于“完全无能”和“知道足以危险”的水平之间。那时,如果我遇到了EE代码的限制,我通常会通过一些内联PHP实现解决方案,部分原因是开发自定义插件的想法似乎太令人生畏,部分原因是点击一个小的“启用PHP”单选按钮非常简单。几年后,每当我需要更新其中一个站点时,我肯定会感到不安。以下是在模板中使用PHP的一些副作用:

  • 可能引入严重的安全漏洞。
  • 增加加载时间,可能会增加很多。
  • 调试代码变得更加困难(祝你好运找出哪个文件/行号有错误)。

使用Pkg.io等工具,你可以在30秒内完成插件的基础工作。它需要一点额外的努力,但收益是值得的。


4

假设我是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代码,你会感到不安吗?
绝对不会感到不安(除非从一开始你的PHP就是灾难性的),但可能会质疑为什么如此简单甚至复杂的代码不在应该存在的地方;即插件中。
注意:我凭空想象了百分比,它们很可能接近现实。
还要注意:我意识到我的回答中设计师/开发者的使用可能被视为刻板印象,但我不太确定如何避免。希望没有人会感到冒犯。

1
我不得不反对;我是一名开发者,我肯定会感到不适。我知道有时候这样做有理由,但是没错,感到不适;) - Eric Lamb
哦,太好了,我试图在我的回答中带来一些平衡,但很高兴听到你实际上会感到不舒服!无论是否感到不舒服,目前为止,似乎每个人都同意PHP属于附加组件。 - Natetronn
2
同意 - http://www.gregaker.net/2010/oct/28/with-great-power-comes-great-responsibility/ - Nevin Lyne

3

我建议您考虑使用类似于phpstringfun插件的东西。这样可以分离不同的内容,但仍然可以在EE标签中工作。

如果是小量且有良好文档支持的PHP代码,可以将其用于模板中,但请尽可能保持简单和抽象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接