私はクラスをオートロードしていて、クラスを動的にインスタンス化する必要があります。__setと__getのマジックメソッドを使ってクラスをインスタンス化する
親クラスに20個のクラスインスタンシエーションがあるのではなく、呼び出されるときにクラスをインスタンス化する方法が必要です。例えば
:
$this->template->render();
が、私はこれが動作するようには思えませんが、私も、私はそれをやっていると思います。この
public function __set($name, $value)
{
return $this->$name;
}
public function __get($name)
{
$this->$name = new $name();
}
を試みた
$this->template = new Template();
をインスタンス化します違う。
私が理解できない1つの問題は、クラスが\ System名前空間にあることです。エラーが発生することなく、new "\System".$name()
またはnew \System.$name()
をタックしているように見えません。
自動的に__construct()メソッドでプロパティを作成することができますどのくらいのプロパティを作成する方法はありますか? – Eli
あなたは既に "仮想"プロパティに 'template'という名前をつけたいので、実際のものと同じものを同じ名前にするのは賢明ではありません。 – KingCrunch
'__set()'メソッドが何かを返すのではなく何かを設定するべきではありませんか? –