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

PHP类构造函数初始化的属性无法保留值是什么原因?

问题原因

你代码中的构造方法名称拼写错误,导致初始化逻辑从未被执行:

  • PHP 规定类的构造方法固定名称为 __construct,你写的 __constructor 属于自定义普通方法,不会在类实例化时自动触发调用。
  • 你注释掉 add_record 内的赋值代码时,$test_var 从未被赋值,所以输出为空,并不是类没有保留属性值。
修复方案

仅需要把构造方法的名称修改为正确的命名即可:

class test {
    public $test_var;

    public function __construct(){
        $this->test_var = 'hello';
    }

    public function add_record(){
        print $this->test_var;
    }
}

$test = new test();
$test->add_record(); // 正常输出 hello
补充注意事项
  • PHP 5.3.3 及之后的版本,和类名同名的方法也不再被识别为构造方法,统一使用 __construct 作为构造方法命名。
  • 开发阶段建议开启 PHP 错误提示,可更快定位这类魔术方法拼写错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:30:03