是否有充分的理由在ExpressionEngine模板中使用PHP?

时间:2012-10-27 01:45:32

标签: expressionengine

我听说过这个问题很复杂。我知道当你坚持在模板中简单地启用PHP并解决问题时,这很容易。但是,它几乎总是会引入潜在的安全问题,并且会使您的模板混乱。

在大多数使用PHP的情况下,用PHP编写一个简单的插件来实现你的需要会更清晰。

我的问题是:在ExpressionEngine模板中使用PHP是否可以接受?或者这被认为是不好的做法?如果您是继承了我编码的网站的开发人员,如果您在模板中看到PHP会不会感到畏缩?

3 个答案:

答案 0 :(得分:6)

这可能很容易成为eval()的优点以及是否应该使用它的问题。大多数the answers这些问题都适用于此处。

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

  • 可能会引入严重的安全漏洞。
  • Increasing load times,可能是 lot
  • 调试代码变得更难(祝你好运找出哪个文件/行号有错误)。

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

答案 1 :(得分:4)

让我们想象一下,我正在回答这个问题,因为80%的人使用ExpressionEngine构建网站,他们可能认为自己是设计师,或者那些几乎没有PHP经验的人:

  

在ExpressionEngine模板中使用PHP是否可以接受?

不,这是不可接受的,请不要这样做!

  

或者这被认为是不好的做法?

是的,差不多。

  

如果您是继承了我编码的网站的开发人员,您会畏缩吗?   如果你在模板中看到PHP?

肯定会畏缩甚至诅咒一点。


好的,现在让我们想象一下,我正在回答20%的人认为自己是EE 开发人员的一部分,或者说他们在编程方面经验丰富的设计师整天都在说:

  

在ExpressionEngine模板中使用PHP是否可以接受?

有一段时间它是可以接受的。例如,您可能需要为此Stash setup打开PHP。这实际上取决于你想要达到的复杂程度。大多数事情应尽可能进入附加组件,而“懒惰”并不算作模板中PHP可接受的时间。

  

或者这被认为是不好的做法?

ExpressionEngine和Codeigniter为此提供了构建附加组件的最佳基础,最佳实践包括尽可能正确分离。这包括与PHP和模板的分离;通常情况下。

如果它可以进入附加组件,它应该如前所述。话虽如此,除了知道这可能会带来安全隐患,导致客户和其他开发人员/设计师等未来头痛等问题之外,没有什么限制你在模板中使用PHP。

  

如果您是继承了我编码的网站的开发人员,您会畏缩吗?   如果你在模板中看到PHP?

绝对不会畏缩(除非你的PHP从一开始就是一场灾难),但是,可能会质疑为什么这么简单甚至复杂的代码不属于它所属的地方;在附加组件中。

注意:我从空气中榨取了百分比,但它们很可能接近现实。

另请注意:我意识到在我的回答中使用设计人员/开发人员可能会被视为刻板印象,但不太确定如何避免它。希望没有人冒犯。

答案 2 :(得分:3)

我会考虑使用像phpstringfun附加组件这样的东西。这会拆分不同的,但你仍然在使用EE标签。

我不会在模板中使用少量记录良好的PHP,但请保持尽可能简单和抽象。