如何使用PHPDoc表示法声明局部变量的类型?

我使用Zend Studio在PHP中与CakePHP一起开发,CakePHP的一个问题是视图都引用了未声明的局部变量。

例如,在控制器中,您将

$this->set('job',new MyJobObject());

然后在视图中,您可以

echo $job->getName();

我的问题是Zend Studio无法在 上执行自动完成,因为它的类型是未知的。现在有 PHPDoc 标记允许您声明类型,以便 IDE 可以执行自动完成。例如,可以在类中使用标记来定义属性的类型。$job@var

class MyJobObject
{
    /**
     * @var MyStatusObject
     */
    public $status;
}

有没有办法对局部变量做这样的事情?


答案 1

您必须使用单行形式:/** @var $job MyJobObject */

请注意,一些编辑器更喜欢相反的语法:/** @var MyJobObject $job */


答案 2

严格来说,这两个答案都是错误的*

/** @var MyJobObject $job */

是正确的 - 类型始终是第一个参数,然后放置描述或指定变量本身。

资源:

https://scrutinizer-ci.com/docs/tools/php/php-analyzer/guides/annotating_code https://docs.phpdoc.org/latest/references/phpdoc/types.html

此外,每个现代PHP IDE都能够识别几乎任何类型的注释语法:

// @var
/* @var */
/** @var */
/* @var
*/
# @var

最常见,最易读和最广泛接受的形式是

/** @var <type> [variable [comment]] */


/** 
 * @var <type> [variable [comment]] 
 */

PSR-5(拟议)https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md

PSR-19(吃水)https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md

*) 在 2013 年,语法可能有所不同。


推荐