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 に答える