PHP:我可以在_constructor中传递$ this吗?

时间:2013-02-19 17:26:44

标签: 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的构造函数中传递$ this,因为实际上没有创建对象...所以$ this已经是对整个对象的有效引用了吗?

1 个答案:

答案 0 :(得分:5)

当然可以。请注意,$this始终指向当前对象。所以在:

$blub = new foo($this);

$this指向bar的实例。因此$obj的构造函数中的foobar的实例。

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