2009-09-07 5 views
15

메서드에 대한 반환 형식 힌트를 지정하는 올바른 구문은 무엇입니까? 예를 들어PHP 메서드의 반환 형식 힌트 지정

, 나는 그런 방법이 있습니다

private static function ConstructPDOObject($dbname) 
{ 
     $hostname =self::HOSTNAME; 
     $username = self::USERNAME; 
     $password = self::PASSWORD; 
     $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 
     return $dbh; 
} 

을 그리고 나는 위의 메소드를 호출 할 때마다 IDE 나에게 PDO에 대한 방법을 보여줍니다, 싶다.

유형 힌트를 추가하는 방법은 무엇입니까?

답변

23
Aptana

, PDT, Zend Studio 다음과 같이 다른 IDE의 당신은 PHP는 방법에 유형 힌트를 추가 할 수 있습니다

/** 
* Constructs a new PDO Object and returns it 
* 
* @param string $dbname name of the database to connect to 
* @return PDO connection to the database 
*/ 
private static function ConstructPDOObject($dbname) 
{ 
     $hostname =self::HOSTNAME; 
     $username = self::USERNAME; 
     $password = self::PASSWORD; 
     $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 
     return $dbh; 
} 

클래스 이름이 의미하는 문서 블록의 @return 속성 뒤에 위치 반환 값의 형태 예 : 예제 메서드의 경우 PDO이 반환되는 클래스 이름입니다. 추가 설명 "데이터베이스에 연결"은 다른 개발자에게 반환 된 값에 대한 의미있는 설명을 제공하는 데 사용됩니다. 필수는 아니지만 조언됩니다.

이 방법으로 PHP 메소드를 문서화하는 데있어서 가장 좋은 점 중 하나는 phpDocumentor 또는 doxygen을 사용하여 문서를 생성 할 수 있다는 것입니다. 나중에 참조 할 수 있도록

+1

나는 Graviton 's와 비슷한 비슷한 질문을했다. 당신의 답은 PHP 코드가 아닌 IDE 코드 분석 기능을 사용하는 해결 방법이다. 어쨌든, 작동하기 때문에 +1. – Benj

+0

반환 유형을 반환하기 전에 미리 캐스팅하여 반환 유형을 확인할 수 있지만 반환 된 결과를 지정된 유형으로 형변환 할 수 있는지 여부 만 확인합니다. [php.net/manual/en/language.types.type-juggling.php]보기 (StackOverflow 사용자 DhruvPathak에게 감사드립니다) – Benj

5

PHP는 반환 유형에 대해 유형 힌트를 지원하지 않습니다. 아마도 반환 유형을 선언하는 문서 블록을 추가해야합니다. 아마 IDE에서 그 블록을 선택할 것입니다 (나는 알 수 없습니다).

+0

! 단서를위한 Thx – CHaP

4

IDE는 힌트는 주석을 통해 이루어집니다. ZEND 프론트 플러그인 중 하나의 예제입니다.

<?php 

/** 
* Initializes Application wide authentication 
* 
* @author Lance Rushing 
* @since 2009-06-01 
* @param Zend_Session $session 
* @return Zend_Auth <--- gives IDE Hint 
*/ 
protected function initAuth($session) 
{ 
    $auth = Zend_Auth::getInstance(); 
    require_once 'AuthStorage.php'; 
    $auth->setStorage(new My_AuthStorage($session)); 
    return $auth; 
} 
17

은,이 (소스에서 인용) 다음과 같은 구문을 사용하여, PHP 7구현된다

function foo(): array { 
    return []; 
} 

는 PHP 7로, 지금 당신의 질문에 대답하기 (2015 년 말경 출시) 당신이 할 수있을 것입니다 다음() 예를 들어 :

<?php 

function ConstructPDOObject($hostname, $dbname, $username, $password): PDO 
{ 
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 
    return $dbh; 
} 

사양도 내 및 인터페이스에 대한 타입 힌트 수 있습니다; 솔리드 (SOLID) 원칙을 고수하는 데 관심이있는 사람들에게

소스 및 자세한 내용 : 넷빈즈 8.1로 확정 https://wiki.php.net/rfc/return_types