How to declare the type for local variables using PHPDoc notation?

二次信任 提交于 2020-12-04 14:37:48

问题


I use Zend Studio to develop in PHP with CakePHP, and one of the problems with CakePHP is that the views all reference undeclared local variables.

So for example, in the controller you would

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

Then in the view you could

echo $job->getName();

My problem is that Zend Studio can't perform autocomplete on $job, because it's type is unknown. Now there are PHPDoc tags that allow you to declare the type so that IDE's can perform autocomplete. The @var tag for example can be used in a class to define a property's type.

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

Is there a way to do something like this for local variables?


回答1:


You have to use the one-line form: /** @var $job MyJobObject */

Note that some editors prefer the syntax the other way around: /** @var MyJobObject $job */




回答2:


You shoud do on top of your view / template file.

<?PHP
/* @var $job MyJobObject */
?>



回答3:


Both answers are wrong*, strictly speaking:

/** @var MyJobObject $job */

Is correct - the type is always the first argument, then you put a description or specify the variable itselfs.

Resources:

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

Otherweise, every modern PHP IDE is able to recognize almost any kind of comment syntax:

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

The most common, most readable and most widely accepted form is

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


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

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

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

*) In 2013 the syntax might have been different.



来源:https://stackoverflow.com/questions/14462390/how-to-declare-the-type-for-local-variables-using-phpdoc-notation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!