2011-07-06 7 views
0

어떻게 부모 정적 메서드에서 하위 클래스를 초기화합니까?PHP 부모 정적 메서드에서 하위 클래스의 새 인스턴스를 초기화 하시겠습니까?

PHP 5.3에서 지연된 정적 바인딩을 사용하는 하위 클래스의 정적 변수와 상위 클래스의 메서드에서 static 키워드를 얻을 수있었습니다. 부모 하위 클래스의 새 인스턴스를 초기화하는 방법 정적 메서드?

감사합니다.

+1

그런 종류의 것으로 잘 알려진 디자인 패턴이 있습니다. 조금 더 정확하게하십시오 : ** 결과 **를 얻으려고하십니까? 왜 그걸하고 싶니? 그러면 올바른 디자인 패턴으로 안내 할 수 있습니다. – SteeveDroz

+1

.. 또는 엄격한 "디자인 패턴"에 사로 잡히지 않는 사람들을 위해 우리는 당신을 당신의 문제에 대한 해결책으로 인도 할 수 있습니다. –

답변

5

정적 변수 나 지저분한 것들을 사용할 필요가 없습니다. 당신은 당신이 새로운 B를 얻을 것이다 b::foo() 호출하는 경우

class a { 
    public static function foo() { return new static; } 
} 

class b extends a { } 

: 여기에 내가 가지고 올 수 짧은 예입니다.

관련 문제