PHP 类属性动态声明时初始化和不初始化的区别是什么?

第一种写法

class test{
    public $a;
    protected $b;
    private $c;
    
    public function __construct($a, $b,$c)
    {
        $this->a = $a;
        $this->b = $b;
        $this->c = $c;
    }
}

第二种写法

class test{
    public function __construct($a, $b,$c)
    {
        $this->a = $a;
        $this->b = $b;
        $this->c = $c;
    }
}

请问这两种写法有什么区别吗还是没有区别,能想到的就是第二种a,b,c三个属性都是为public

阅读 2.8k
2 个回答

有区别的
1.执行顺序不一样,类属性初始化调用优先级高于构造函数
2.初始化可以自定义修饰符

第二种当程序中加入了__set()魔术方法后 会报错

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题