次作品:親を呼び出す子オブジェクトを保持する可能性はありますか?コードの
class a{
public function __get($key) {
if($key == 'obj') {
if($b->obj == null) { //PSEUDO this is what I intend to do :)
$obj = new Obj();
$b->obj = $obj
}
return $obj;
}
}
}
class b extends a{
private $obj = null;
public function __get($key) {
return parent::__get($key);
}
}
だから、アイデアは、必要に応じてオブジェクトを作成することです。しかし、parent :: _ getメソッドを呼び出すオブジェクトのクラスを検出できるかどうかはわかりません。子供のようないくつかの演算子は私が推測するものです:)。
たとえば、私はCountryというオブジェクトを1つ持っているので、自分のクラスでCountryオブジェクトと別のクラスLocationを持つUserを定義します。Countryオブジェクトもあります。どちらのクラスもクラスaを拡張しています。クラスaからifブロックをそれぞれの子クラスに書くことで、この問題を解決できました。しかし、それは私がしたくないことです。したがって、どのクラスが__get関数を呼び出すかをチェックし、目的のCountryオブジェクトを子クラスに直接設定することがより簡単になります。私は私の問題がはっきりし、それはあまりにも変わったheheではないことを願っています。私は他のソリューションにもオープンしています...ありがとう。
はい、これはどういうわけか私の解決策です。ここでの問題は、クラスaに_objというメンバーがないため、$ this - > _ obj == nullが常に真です。これは基本的に、このオブジェクトを既に持っているかどうかを子クラスに尋ねる必要があるポイントです。この方法では、メンバーにアクセスするたびにオブジェクトを作成し続けます。 – samy
まあ、いいえ。出力オブジェクトが2回目にフェッチされるときに一度だけ作成されるのを見てください。 – bububaba
申し訳ありません、ありがとう、問題は、私のメンバーは私の部屋は、母クラスは、それらを更新できませんでした:)ありがとう! – samy