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

相关问题