为什么PHP认为我想将该对象转换为字符串?
class Class1 {}
class Class2 {
function __construct( Class1 $class1Obj) {
$this->$class1Obj = $class1Obj; // -> Catchable fatal error: Object of class Class1 could not be converted to string
}
}
$class1Obj = new Class1();
$class2Obj = new Class2($class1Obj);
答案 0 :(得分:5)
这是额外的$
吗?那会更好:
$this->class1Obj = $class1Obj;
答案 1 :(得分:2)
要解释一下,当你这样做时:
$this->$class1Obj = $class1Obj;
您实际上要做的是在$ this-> [valueOf $ class1Obj]中分配$ class1Obj的值。让我们举一个例子,假设$ class1Obj有这个值:
$class1Obj = "test123";
执行以下行:
$this->$class1Obj = $class1Obj;
相当于这样做:
$this->test123 = "test123";
答案 2 :(得分:0)
$ this-> $ class1Obj尝试使用Class2作为属性名创建公共字符串属性。
这就是为什么你会遇到致命的错误尝试使用Class1的代码
class Class1 {
public function __toString() {
return 'Class1';
}
}
编辑:迟到回答