2016-08-04 5 views
0

오늘 나는 2 년 전에 인터뷰에서 묻게되었던 질문을 상기했다.생성자에서 자신을 필요로하는 객체를 만드는 방법은 무엇입니까? (PHP)

나는 그것을 매우 귀찮게하기 때문에 그것을 해결하고 싶다.

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

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

내가이 클래스의 개체를 만들 수 있습니다 방법 :

그래서, 여기 내 PHP 클래스입니다? 그러나 우리는이 수업을 변경할 수 없습니다.

+0

는 확장 클래스 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); 
관련 문제