PSR-1 2.3 副作用规则

2022-08-30 16:35:45

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

规则2.3 副作用

文件应该声明新的符号(类,函数,常量
等)并且不引起其他副作用,或者它应该执行具有副作用
的逻辑,但不应该同时执行这两种操作。

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

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

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


答案 1

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

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

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

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

最后。。不要为了这个原因而采用PSR-1。如果您有正当理由在某些地方不遵守规则,请打破规则。它们不是法律。常识至高无上。

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


答案 2

推荐