2016-08-04 3 views
0

今日、私は2年前のインタビューで私に質問された質問を思い出しました。コンストラクタでそれ自体を必要とするオブジェクトを作成する方法は? (PHP)

そして、私は非常に気になるので、解決したいと思います。

だから、ここに私のPHPクラスは次のとおりです。

class A 
{ 
    function __construct(A $aObject) 
    { 
     $aObject->getValue(); 
     return; 
    } 

    function getValue() 
    { 
     echo 'Success'; 
    } 
} 

私は、このクラスのオブジェクトを作成するにはどうすればよいですか?しかし、私たちはこのクラスを変更することはできません。

+0

はA拡張するクラスBを作成Aの構築方法を上書きし、新しいA(新しいB())を使用して作成します。 –

答えて

6

あり、複数のソリューションは、ある最も些細な一つReflectionClass::newInstanceWithoutConstructorを使用している:

$a = new A((new ReflectionClass("A"))->newInstanceWithoutConstructor()); 

別の解決策は、クラスを拡張し、そこコンストラクタのオーバーロードされるであろう:

class B extends A { 
    function __construct() {} 
} 
$a = new A(new B); 
関連する問題