为什么在构造函数初始化此属性时声明类的属性

Joh*_*nyC 4 php oop

写出什么是最好的,为什么?

class Chat
{
    private $_couleur;
    private $_race;

    function __construct($couleur, $race)
    {
        $this->_couleur = $couleur;
        $this->_race = "$race";
    }

    public function getCouleur() {
        return $this->_couleur;
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

class Chat
{
    function __construct($couleur, $race)
    {
        $this->_couleur = $couleur;
        $this->_race = "$race";
    }

    public function getCouleur() {
        return $this->_couleur;
    }
}
Run Code Online (Sandbox Code Playgroud)

因为$this->_couleur在类被实例化时被初始化,所以在类中直接声明属性是没用的,不是吗?

Bas*_*ein 7

在类的顶部声明变量是一种非常好的做法,因为它使任何读取代码的人都清楚该类具有私有属性以及类已公开的属性.

在第二个例子中,你的变量将是公开的,因为它们是动态生成的.

当您的构造函数变得更大时,作为开发人员的屁股很难找到引入变量的位置.
将默认值(如果它们始终相同)设置为类中与构造函数相对应的变量也是很好的.它使您的代码更易读和易懂.