解決策とパターンを何時間も探した後、私はプロに尋ねる時が来ました。
オブジェクトを論理階層で並べ替えたいのですが、それでも親オブジェクトのプロパティにアクセスできるようにしたいのです。それをどのように機能させたいかという簡単な例...
class car {
public $strType; // holds a string
public $engine; // holds the instance of another class
public function __construct(){
$this->type = "Saab";
// Trying to pass on $this to make it accessible in $this->engine
$this->engine = new engine($this);
}
}
class engine {
public $car;
public function __construct($parent){
$this->car = $parent;
}
public function start(){
// Here is where I'd love to have access to car properties and methods...
echo $this->car->$strType;
}
}
$myCar = new car();
$myCar->engine->start();
私が達成できないのは、エンジンのメソッドが「親」の車のプロパティにアクセスできることです。私はなんとかこのようにそうすることができました、しかしそれは非常に醜いです...
$myCar = new car();
$myCar->addParent($myCar);
addParentメソッド内から、インスタンスをエンジンオブジェクトに渡すことができます。しかし、それが手がかりになることはありませんね。私のアイデア全体は奇妙ですか?
車には多くの方法と特性があり、エンジンにはないので、エンジンを車から継承したくありません。あなたが私の言いたいことを理解してくれることを願っています。
ヒントを期待して、乾杯ボリス