我需要跟踪其实例创建另一个实例。这是一个实例化层次不父子类层次结构。下面是一个例子:

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;
    }
}

如果我做的:

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

我现在有车的1个实例和发动机2。我需要知道哪些情况下创建了实例。是这样的:

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

将返回:$ myCar或$ myCar-> ID

但是,如果我做的:

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

将返回:根或空或0;

我需要跟踪此,而是具有很多动态创建的对象的予需要此层次结构的动态跟踪。有任何想法吗? 谢谢!

有帮助吗?

解决方案

您可以有一个汽车打造自己的引擎,并在形式传递自身引用:

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

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

其他提示

您不得不看 debug_backtrace 一次实例被创建。从那里,你可以创建者存储在一个变量,因为没有办法,后来做。因此,我也建议传递创建实例到另一个实例,如果他们在概念联系在一起的。和汽车及其引擎是

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top