PHP类属性可以等于另一个类属性吗?

4 php properties class

我想做这个:

class MyClass {
   var $array1 = array(3,4);
   var $array2 = self::$array1;
}
Run Code Online (Sandbox Code Playgroud)

并且$array2不起作用.

你有一个解决方案/技巧来使类属性等于另一个类属性吗?

Pao*_*ino 6

根据PHP Manual:

默认值必须是常量表达式,而不是(例如)变量,类成员或函数调用.

你可以做的是:

class MyClass {
    var $array1 = array(3,4);
    var $array2 = array();

    function MyClass() {
        $this->array2 = $this->array1;
    }
}
Run Code Online (Sandbox Code Playgroud)

每次创建新对象时都会调用该函数MyClass(或者__construct如果您使用的是PHP5),因此任何实例都MyClass将具有array2与其array1属性具有相同值的属性.

$myclass = new MyClass();
print_r($myclass->array1); // outputs Array ( [0] => 3 [1] => 4 ) 
print_r($myclass->array2); // outputs Array ( [0] => 3 [1] => 4 ) 
Run Code Online (Sandbox Code Playgroud)