为方法指定返回类型提示的正确语法是什么?
例如,我有这样一种方法:
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的方法。
如何添加类型提示?
答案 0 :(得分: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 :(得分: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原则的人。
答案 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