23

我有一个关于 PHP 基本编码标准 PSR1 的问题。PSR 1 规则 2.3 规定:

规则 2.3 副作用

一个文件应该声明新的符号(类、函数、常量
等)并且不会引起其他副作用,或者它应该执行具有
副作用的逻辑,但不应该两者都做。

短语“副作用”是指执行与
声明类、函数、常量等没有直接关系的逻辑,仅来自包含文件

“副作用”包括但不限于:生成输出、显式
使用 'require' 或 'include'、连接到外部服务、修改 ini
设置、发出错误或异常、修改全局或静态变量、
读取或写入一个文件,等等。

有人可以给我一个支持使用此规则的论据吗?或者,解释这条规则的好处,以及为什么它很重要或实施的好主意。这将帮助我支持 PSR 1 的全面实施并提出一个很好的案例。

4

1 回答 1

43

这个想法是当一个类被自动加载时,应用程序的状态不应该改变。任何修改状态的代码(实际执行的代码)都应该在不同的文件集中。

这使其可预测并迫使您将逻辑保留在类方法中,并且是隐式的。

请记住,存在编码标准,因此人们以类似的风格进行编码。采用编码标准的好处是您的代码库是自洽的,并且与遵循规则的其他项目一致。

PSR-1 在很大程度上遵循了每个人已经在做的事情。如果您觉得需要在定义类的同一位置执行逻辑,则很可能有更好的位置或方法。

最后..不要为了起见而采用 PSR-1。如果你有正当理由在某些地方不遵守规则,那就打破规则。它们不是法律。常识至高无上。

资料来源:我是该文件的贡献者之一。

于 2012-11-08T22:30:34.573 回答