2009-12-21 7 views
2

표준 메소드의 경우 다음과 같은 주석에 리턴 유형을 지정할 수 있음을 알고 있습니다.PHP에서 유형 힌트가있는 동적 반환 유형?

/** 
* Load this entity from the database with the specified primary key. 
* @param int $Key 
* @return BaseEntity 
*/ 
public static function Load($Key) 
{ ... } 

서브 클래스에 따라 리턴 유형을 변경하고 싶습니다. 뭔가 :

 * @return __CLASS__ 

다른 언어로, 이것은 템플릿 등을 사용하여 수행 할 수 있습니다. 나는 PHP에 대한 옵션이 있습니까?

답변

2

아니요.이 코드를 생성하기위한 코드를 작성하지 않는 한.

이는 주석이며 코드 실행 방식을 변경하지 않습니다. IDE에서 코드 힌트를 사용하거나 PHPDoc이 설명서를 생성하는 데 사용할 수 있습니다. 이러한 응용 프로그램에는 원하는 것을 수행하고 문서를 확인하는 방법이있을 수 있습니다. 그러나 주석은 코드가 실행되는 방식에 영향을 미치지 않습니다.

1

BaseEntity을 예를 들어 SubclassEntity으로 확장하고 말하자면 인터페이스를 강화하고 싶습니다. 그러나 의 인터페이스가 이고 인터페이스가입니다.

개념적으로 Load은 실제로 SubclassEntity이라는 것을 알게 되더라도 항상 BaseEntity을 반환해야합니다. 실제로 반환 된 객체가 SubclassEntity 인 경우 다음을 추가합니다.

$obj = $container->Load(123); /* @var $obj SubclassEntity */