为什么在注释中声明PHP变量类型?

ste*_*ail 20 php variables netbeans

我是PHP的新手,我刚开始使用NetBeans来开发我的PHP代码.

出乎意料的是,当我在查询中输入变量时,会弹出一个对话框并要求我完成注释以保存变量类型.我做了一些调查,发现这似乎是NetBeans的一个流行功能,但我找不到任何信息向我解释为什么会这样.

为什么有人想在评论中放置PHP变量的类型?它是用于开发用途还是实际上有益于代码本身?它是不可或缺的,还是可选的?

Jon*_*ner 33

@var方法注释中的标记中添加类型将允许NetBeans向您显示代码完成情况.这当然是可选的,但完全记录代码总是一个好主意.

编辑: NetBeans为您自动生成注释的提示是使用/**扩展.要执行此操作,只需将光标放在要记录的属性或方法上方并键入/**,然后ENTER按键.这将扩展phpDoc样式注释并添加适当的标记.

编辑2: 您可以@var在属性上使用标记,并且可以@param在方法上使用标记来实现与传递给方法的参数相同的效果.

@var在属性上使用标记将在使用属性时为您提供代码提示:

/**
 *
 * @var My_Type
 */
private $_myProperty;
Run Code Online (Sandbox Code Playgroud)

@param在方法内使用参数时,在方法上使用标记将为您提供代码提示:

/**
 *
 * @param My_Type $obj 
 */
public function myMethod($obj) {

}
Run Code Online (Sandbox Code Playgroud)

另一种实现类似效果同时还提供类型安全性的方法是使用PHP的类型提示机制:

public function myMethod(My_Type $obj) {

}
Run Code Online (Sandbox Code Playgroud)

请注意,此方法具有方法签名中指定的类型.NetBeans现在将在使用@param标记的方法内提供相同的代码完成,E_RECOVERABLE_ERROR如果传入方法的类型与指定的类型不同,PHP将生成一个代码.如果您有兴趣了解有关上述错误的更多信息,请参阅PHP有关错误的文档以及如何处理错误.


Cro*_*zin 9

我想你在谈论类似的事情:

/**
 * @var SimpleXMLElement $xml
 */
private $xml;
Run Code Online (Sandbox Code Playgroud)

这就是所谓的phpDoc评论.它允许您生成API文档(例如,这样).此外,包括Eclipse和NetBeans在内的大多数IDE也支持该语法,并提供动态代码完成等.


Kat*_*Kat 8

如果要在变量不是类属性但只是保存一些返回值的变量的情况下声明变量的类型,请使用单星注释,然后使用@var,后跟变量名称,最后是类型那个变量.例如:

/* @var $errorMessage NotificationMessage */
$errorMessage= $allMessages->rewind()->current();
Run Code Online (Sandbox Code Playgroud)

将告诉NetBeans或PhpStorm $ errorMessage是NotificationMessage的一个实例,您应该获得该变量的代码完成.