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

Gra*_*ton 16 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;
}
Run Code Online (Sandbox Code Playgroud)

我想,每当我调用上述方法时,IDE都会向我展示PDO的方法.

如何添加类型提示?

Jos*_*iah 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;
}
Run Code Online (Sandbox Code Playgroud)

类名放在文档块的@return属性之后,表示方法的返回类型.例如,对于示例方法,PDO是返回的类名.附加说明"与数据库的连接"用于向其他开发人员提供返回值的有意义的描述,这不是必需的,但建议使用.

以这种方式记录您的PHP方法的一个好处是,您可以使用phpDocumentordoxygen生成文档.


AAR*_*RTT 21

为了将来参考,这是针对PHP 7实现的,具有以下语法(引自源代码):

function foo(): array {
    return [];
}
Run Code Online (Sandbox Code Playgroud)

要回答您的问题,从PHP 7(2015年底发布)开始,您将能够执行以下操作(作为示例):

<?php

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

该规范还允许在接口内和接口上进行类型提示; 对于我们这些有兴趣遵守SOLID原则的人.

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


cle*_*tus 5

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