私は、「parent :: _construct」に類似しているが、クラス自体を呼び出すクラスのコンストラクターを呼び出す方法を探していました(「self :: _construct」のようなものですが、機能しません)。なぜこれをするのですか?次のことを考慮してください(これは機能しません、ところで)...
class A {
var $name;
function __construct($name) {
$this->name = $name;
}
function getClone($name) {
$newObj = self::__construct($name);
return $newObj;
}
}
class B extends A {
}
実際の実装では、クラスBとクラスAを区別する他のプロパティがありますが、どちらにも「getClone」メソッドが必要です。クラスAのオブジェクトで呼び出された場合は、クラスAの別のオブジェクトを生成し、クラスBで呼び出された場合は、クラスBの別のオブジェクトを生成する必要があります。
もちろん、クラスBの "getClone"をオーバーライドし、クラス名をメソッドにハードコーディングすることでこれを行うこともできます(つまり、$ newObj = new B($ name))が、メソッドをコーディングするだけの方がはるかに便利です。一度、そのクラスが何であれ、それ自身のクラスのオブジェクトをインスタンス化するように指示します。
PHPでこれを実行できますか?