Nasıl php başka bir nesnenin bir örneğini oluşturdu örneği alabilirim?

2 Cevap php

Ben başka bir örneğini oluşturulur hangi örneği izlemek gerekir. Bu bir örneklemesi hiyerarşi değil, bir ebeveyn-çocuk sınıf hiyerarşisi var. İşte bir örnek:

class Car{

    private var $engine;
    private var $id;

    public function __construct(){
        $this->id = nextId();
        $this->engine = new Engine(500);
    }
}

class Engine{

    private var $horsepower;
    private var $id;

    public function __construct($hp){
        $this->id = nextId();
        $this->horsepower = $hp;
    }
}

Ben yaparsam:

$myCar1 = new Car();
$myEngine = new Engine(200);

Şu anda 1 Araba örneğini ve Motoru 2 var. Ben hangi bir örneğini oluşturdu hangi örneği bilmek gerekir. böyle bir şey:

$creator = instanceCreatorOf($myCar1->engine or $myCar1->engine->id);

dönecekti: $ arabam ya $ arabam-> id;

but Ben yaparsam:

$creator = instanceCreatorOf($myEngine or $myEngine->id);

dönecekti: root veya null veya 0;

I need to track this but having a lot of dynamically created objects I need dynamic tracking of this hierarchy. Any ideas? thanks!

2 Cevap

Bir Araba kendi motorunu oluşturmak ve kendisi için bir referans geçmek olabilir:

class Car {
  function __construct() {
    myEngine = new Engine(this);
...

ve

class Engine {
 var $creator;
 function __construct(Car $car, $horsepower) {
  $this->creator = $car;
...

Sen örneği oluşturulduktan sonra debug_backtrace bakmak gerekiyor. Daha sonra yapmak için hiçbir yolu yoktur gibi Oradan bir değişkene yaratıcısı saklamak. Böylece, ben de kavramsal birbirine bağlı olup olmadığını diğer örneğine oluşturma örneğini geçen öneririm. Ve Otomobil ve Motorlar vardır.