我试着做以下事情:
class Foo {
private $bar = new baz(); // Expression is not allowed as field default value
}
class Baz {
public function __construct() {
echo "hello world";
}
}
我无法找到为什么不允许表达式的结果。为什么我可以分配字符串,整数和其他数据类型但没有对象?
答案 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
}
}
?>