我对PHP基本编码标准PSR1有疑问。 PSR 1规则2.3规定:
规则2.3副作用
文件应该声明新的符号(类,函数,常量,
等)并且不会产生其他副作用,或者它应该用侧面执行逻辑 效果,但不应该两者兼而有之。短语“副作用”是指执行与
不直接相关的逻辑 声明类,函数,常量等,仅仅包括 文件的“副作用”包括但不限于:生成输出,显式
使用'require'或'include',连接到外部服务,修改ini
设置,发出错误或异常,修改全局或静态变量,
读取或写入文件,等等。
有人可以给我一个支持使用此规则的论据吗? 或者,解释这条规则的好处,以及实施它的重要性或好主意的原因。 这将有助于我支持PSR 1的全面实施,并提供一个很好的案例。
答案 0 :(得分:35)
这个想法是当一个类自动加载时,应用程序的状态不应该改变。 任何状态修改代码(实际执行的代码)都应该在不同的文件集中。
这使得它可以预测,并迫使你将逻辑保留在类方法中,并且是隐式的。
请记住,编码标准存在,所以人们以类似的方式编码。采用编码标准的好处是您的代码库是自洽的,并且遵循规则与其他项目保持一致。
PSR-1很大程度上遵循了每个人的所作所为。如果您觉得需要在定义类的同一位置执行逻辑,那么很可能是一个更好的地方或方法。最后......为了这个原因,不要采用PSR-1。如果您有正当理由不遵守某些地区的规则,请违反规定。他们不是法律。常识至高无上。
来源:我是该文件的贡献者之一。