2009-09-07 19 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

AptanaPDTZend 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方法的好處之一就是您可以使用phpDocumentordoxygen生成文檔。

+1

我的問題與Graviton的問題類似:您的答案是使用IDE代碼分析功能而不是PHP規範的解決方法。無論如何,+1,因爲它的作品。 – Benj 2012-11-28 16:08:10

+0

您可以在返回之前通過預先轉換來檢查返回類型,但它僅檢查返回的結果是否可以轉換爲指定的類型。見[php.net/manual/en/language.types.type-juggling.php](感謝StackOverflow用戶DhruvPathak) – Benj 2012-11-28 16:24:27

5

PHP不支持返回類型的類型提示。也許你應該添加一個聲明返回類型的文檔塊,也許你的IDE會選擇它(我不知道它是否會)。

+0

與NetBeans 8.1確認! Thx的線索 – CHaP 2016-07-02 19:40:46

4

的IDE提示通過評論來完成。以下是我的一個ZEND Front Plugins的示例。

<?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原則感興趣的人。

來源和更多信息:https://wiki.php.net/rfc/return_types

相關問題