5

我听说过这件事的复杂性。我知道当您被困在模板中简单地启用 PHP 并解决问题时,这很容易。但是,它几乎总是会引入潜在的安全问题,并使您的模板一团糟。

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

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

4

3 回答 3

6

这很容易成为关于它的优点eval()以及是否应该使用的问题。这些问题的 大多数答案在这里同样适用。

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

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

使用Pkg.io之类的工具,您可以在 30 秒内为插件奠定基础。这需要一点额外的努力,但收获是值得的。

于 2012-10-27T11:54:16.883 回答
4

假设我作为 80% 使用 ExpressionEngine 构建网站的人中的一员来回答这个问题,他们可能认为自己是设计师,或者几乎没有 PHP 经验的人:

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

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

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

是的,差不多。

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

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


好的,现在让我们想象一下,我是作为 20% 的一部分来回答的,他们认为自己是一名 EE开发人员,或者整天比设计师更有编程经验:

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

偶尔可以接受。例如,您可能会发现需要为此Stash 设置打开 PHP 。这实际上取决于您要实现的目标的复杂性。大多数事情都应该尽可能地放入一个附加组件中,并且“懒惰”并不能算作 PHP 在模板中可以接受的时间。

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

就此而言,ExpressionEngine 和 Codeigniter 为构建附加组件和最佳实践提供了良好的基础,包括尽可能适当的分离。这包括与 PHP 和模板的分离;往往不是。

如果它可以进入附加组件,它应该如前所述。话虽如此,实际上并没有什么限制您在模板中使用 PHP,除非知道这可能会产生安全隐患,给客户和其他开发人员/设计师等带来未来的麻烦。

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

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

注意:虽然我是凭空得出的百分比,但它们很可能接近现实。

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

于 2012-10-27T02:17:45.647 回答
3

我会考虑使用类似 phpstringfun 的插件。这将不同的部分分开,但您仍在使用 EE 标签。

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

于 2012-11-03T04:05:09.450 回答