“赋值时,类的对象...无法转换为字符串”

时间:2013-07-03 20:33:14

标签: php

为什么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);

3 个答案:

答案 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'; 
   } 
}

编辑:迟到回答