PHP:我可以在_构造函数中传递$this吗?

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

我想将一个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已经是对整个对象的有效引用了吗?

当然可以。请记住,
$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也会改变,对吗?