PHP:我可以在_构造函数中传递$this吗?
我想将一个php对象在其自己的构造函数中传递给另一个对象,如下所示:PHP:我可以在_构造函数中传递$this吗?,php,constructor,this,Php,Constructor,This,我想将一个php对象在其自己的构造函数中传递给另一个对象,如下所示: class foo { $parent_object; public function __construct($obj) { $this->parent_object = $obj; } } class bar { public function __construct() { $blub = new foo($this); } } 我问自己的问题是:我能在bar的构造函数中传递$t
class foo {
$parent_object;
public function __construct($obj) {
$this->parent_object = $obj;
}
}
class bar {
public function __construct() {
$blub = new foo($this);
}
}
我问自己的问题是:我能在bar的构造函数中传递$this吗,因为对象实际上还没有被创建。。。那么$this已经是对整个对象的有效引用了吗?当然可以。请记住,
$this
始终指向当前对象。因此:
$blub = new foo($this);
$this
指向条的实例。所以foo
的构造函数中的$obj
就是bar
的实例
$this
可在构造函数开头使用。现在,如果bar
立即调用$obj
上的函数,则可能是bar
的实例尚未处于正确的状态(即,$blub
尚未分配)。这可能会导致引用问题,解决方法是将引用交换移出构造函数。当然可以。请记住,$this
始终指向当前对象。因此:
$blub = new foo($this);
$this
指向条的实例。所以foo
的构造函数中的$obj
就是bar
的实例
$this
可在构造函数开头使用。现在,如果bar
立即调用$obj
上的函数,则可能是bar
的实例尚未处于正确的状态(即,$blub
尚未分配)。这可能会导致引用问题,解决方法是将引用交换移出构造函数。运行代码会比在此处询问更快:)运行代码会比在此处询问更快:)如果不可能,则无法在构造函数中设置属性值,因此这一切都变得毫无用处。这是一种明智的看待方式。谢谢你的回答!通过声明$this始终指向当前对象:这意味着,我是否应该在代码后面的某个地方执行$bar->property='value';然后$bar->blub->parent\u object->property也会发生变化,对吧?如果不可能,你就不能在构造函数中设置属性值,从而使它变得毫无用处。这是一种合理的看待方法。谢谢你的回答!通过声明$this始终指向当前对象:这意味着,我是否应该在代码后面的某个地方执行$bar->property='value';然后$bar->blub->parent\u object->property也会改变,对吗?