私は親クラスとそれを継承する複数の子を持っています。入れ子になったオブジェクトの作成を追跡する方法
子供の中には、自分の中の他の子供たちに電話する人もいます。しかし、必ずしもネストされているとは限りません。
class Parent { }
class Child extends Parent {
public function run() {
// Kid nested inside Child. Do not open DB transaction
$a = (new Kid())->run();
}
}
class Kid extends Parent {
public function run() {
// @todo Open DB transaction if not nested
}
}
// Kid not nested. Open DB transaction
(new Kid())->run();
それは内部またはChild
の外でインスタンス化されたかどうか(手動で私が言われずに)知るKid
オブジェクトのための効率的な方法はありますか?
は?おそらくそうではありません。多分あなたが達成しようとしていることを説明すれば、別の方法で助けてくれるかもしれません... – FirstOne
@FirstOne 'run'メソッドの中でトップレベルの子クラスがDBトランザクションを開き、閉じたいと思っています。しかし、いくつかのケースで見ることができるように、「キッド」はトップレベルであり、それ以外の場合はそうではありません。 – andrewtweber
あなたは[$ GLOBALS](http://php.net/manual/en/reserved)で何かを試すことができました。 variables.globals.php)。外出先の子供が本当にすべてから外れている場合、あなたは試してみることができます:あなたが持っているものは、あなたがグローバルから得たものと同じものです。 **編集:**これは変数をグローバルとして設定することではないことに注意してください。変数が存在するかどうかを確認することです。 – FirstOne