0

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

4

1 回答 1

5

你当然可以。请记住,它$this始终指向当前对象。所以在:

$blub = new foo($this);

$this指向 的实例bar。所以$obj在构造函数中foo是那个实例bar

$this在构造函数的开头可用。现在,如果bar立即调用函数,$obj则可能是该实例bar尚未处于正确状态(即$blub尚未分配)。这可能会导致引用问题,解决方案是将引用交换移出构造函数。

于 2013-02-19T17:28:16.127 回答