2013-01-22 56 views
14

我使用Zend Studio在PHP中用CakePHP进行开发,而CakePHP的一个问题是视图都引用了未声明的局部变量。如何使用PHPDoc符号声明局部变量的类型?

因此,例如,在控制器中,你会

$这个 - >设置( '工作',新MyJobObject());

然后在视图中,你可以

回声$求职>的getName();

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

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

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

回答

22

你必须使用一个线形态:/** @var $job MyJobObject */

注意一些编辑喜欢的语法的其他方式:/** @var MyJobObject $job */

+1

你可以把它放在一个可执行程序块中的任何地方,它会一直有效直到函数结束(或任何重新定义)。 –

+0

谢谢你!这将是一个很大的帮助。 – cgTag

+5

NetBeans似乎认识到'/ * @var $ varName varType * /'语法(注意**注释开始处只有一个'*') – matt

4

您务必做好你的看法/模板文件的顶部。

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

谢谢!我接受了其他答案,因为他的代表点较低,但再次感谢您的回答。 – cgTag