题
我需要跟踪其实例创建另一个实例。这是一个实例化层次不父子类层次结构。下面是一个例子:
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 一次实例被创建。从那里,你可以创建者存储在一个变量,因为没有办法,后来做。因此,我也建议传递创建实例到另一个实例,如果他们在概念联系在一起的。和汽车及其引擎是
不隶属于 StackOverflow