我想将自己的构造函数中的php对象传递给另一个像这样的对象:
class foo {
$parent_object;
public function __construct($obj) {
$this->parent_object = $obj;
}
}
class bar {
public function __construct() {
$blub = new foo($this);
}
}
我问自己的问题是:我可以在bar的构造函数中传递$ this,因为实际上没有创建对象...所以$ this已经是对整个对象的有效引用了吗?
答案 0 :(得分:5)
当然可以。请注意,$this
始终指向当前对象。所以在:
$blub = new foo($this);
$this
指向bar
的实例。因此$obj
的构造函数中的foo
是bar
的实例。
$this
在构造函数的开头可用。现在,如果bar
立即调用$obj
上的函数,则bar
的实例可能尚未处于正确状态(即。$blub
尚未分配)。这可能会导致引用问题,解决方法是将引用交换移出构造函数。