不允许表达式 - 使用新对象设置类var

时间:2016-07-07 08:53:22

标签: php oop object

我试着做以下事情:

class Foo {
    private $bar = new baz(); // Expression is not allowed as field default value
}

class Baz {
    public function __construct() {
        echo "hello world";
    }
}

我无法找到为什么不允许表达式的结果。为什么我可以分配字符串,整数和其他数据类型但没有对象?

2 个答案:

答案 0 :(得分:2)

它就像PHP的工作方式。您不能在类属性中使用函数(包括构造函数)。

  

属性是蓝图,必须独立于运行时   环境(source

您可以通过__construct()

将对象分配给属性
class Foo {
    private $bar;

    public function __construct() {
         $this->bar = new baz();
    }
}

class Baz {
    public function __construct() {
        echo "hello world";
    }
}

答案 1 :(得分:1)

这应该对你有用

<?php
class Baz {
    public function __construct() {
        echo "hello world";
    }
}
class Foo {
  private $bar;
  function __construct(){
    $bar = new Baz(); // Expression is not allowed as field default value
  }

}
?>