我使用Zend Studio在PHP中使用CakePHP进行开发,而CakePHP的一个问题是视图都引用了未声明的局部变量。
例如,在控制器中你会
$ this-> set('job',new MyJobObject());
然后在视图中你可以
echo $ job-> getName();
我的问题是Zend Studio无法在$job
上执行自动填充,因为它的类型未知。现在有PHPDoc标签允许您声明类型,以便IDE可以执行自动完成。例如,@var
标签可以在类中用于定义属性的类型。
class MyJobObject
{
/**
* @var MyStatusObject
*/
public $status;
}
有没有办法为局部变量做这样的事情?
答案 0 :(得分:29)
您必须使用单行表单:/** @var $job MyJobObject */
请注意,有些编辑更喜欢使用语法:/** @var MyJobObject $job */
答案 1 :(得分:6)
您应该在视图/模板文件的顶部进行操作。
<?PHP
/* @var $job MyJobObject */
?>
答案 2 :(得分:4)
两个答案都是错误的 * ,严格来讲:
Tera Term
是正确的-类型始终是第一个参数,然后您添加描述或指定变量本身。
资源:
this code from GeeksForGeeks https://scrutinizer-ci.com/docs/tools/php/php-analyzer/guides/annotating_code
Otherweise,每个现代的PHP IDE都可以识别几乎所有类型的注释语法:
/** @var MyJobObject $job */
最常见,最易读和最广泛接受的形式是
// @var
/* @var */
/** @var */
/* @var
*/
# @var
PSR-5(拟议)https://docs.phpdoc.org/latest/references/phpdoc/types.html
PSR-19(草稿)https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md
*)在2013年,语法可能有所不同。