PHP指定方法的返回类型提示

时间:2009-09-07 03:51:32

标签: 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的方法。

如何添加类型提示?

5 个答案:

答案 0 :(得分: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 :(得分:21)

为了将来参考,这是针对 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

答案 2 :(得分:5)

PHP不支持返回类型的类型提示。也许你应该添加一个声明返回类型的文档块,也许你的IDE会选择它(我不知道它是否会出现)。

答案 3 :(得分: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;
}

答案 4 :(得分:3)

返回类型提示仅由IDE提供。 Zend studio和PDT支持PHPDocumentor样式的doc块。

http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.return.pkg.html