You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PHP标准推荐中,创建类实例属于副作用还是声明?

在PHP标准推荐(PSR)中,创建类实例属于副作用还是声明?

在PSR的规范体系里,我们可以通过明确「声明」和「副作用」的定义来判断:

核心定义区分

  • 声明:仅指用于定义代码结构的操作,比如创建类、接口、trait、函数、常量等,这类操作不会触发任何外部可见的状态变化或执行逻辑,只是为程序提供可调用的结构。
  • 副作用:指除声明之外的所有操作,只要会改变程序状态、产生外部影响或执行非结构定义的逻辑,都属于副作用,比如输出内容、修改全局变量、调用外部API,以及创建类实例。

实例化属于副作用的原因

根据PSR-1的规范要求,创建类实例明确属于副作用:

  1. 即使类的构造函数是空实现,new ClassName(); 操作也会在内存中生成一个对象实例,这本身就是程序状态的变化,符合副作用的定义。
  2. 如果构造函数包含业务逻辑(比如初始化配置、建立数据库连接、修改全局变量),实例化过程会直接触发这些逻辑,带来更明显的外部影响,完全不属于声明范畴。

PSR的最佳实践

PSR推荐将声明代码与副作用代码分离到不同文件中:

  • 一个文件只负责类、函数等结构的声明,不包含任何实例化或执行逻辑。
  • 另一个文件专门处理实例化、调用逻辑等副作用操作。
    这种分离能提升代码的可维护性和可测试性,避免加载声明文件时意外触发不必要的副作用。

内容的提问来源于stack exchange,提问作者zaza mirotadze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:49:52