只是好奇netbeans是否有办法为常规变量提供类型提示,以便intellisense选择它。我知道你可以为类属性,函数参数,返回类型等做这些,但我无法弄清楚如何为常规变量做到这一点。在你有一个可以返回不同对象类型的方法(比如服务定位器)的情况下,这会非常有用。
例如:
/**
* @var Some_Service $someService
*/
$someService = ServiceLocator::locate('someService');
之后使用$ someService,netbeans将提供Some_Service类中定义的所有可用方法。
答案 0 :(得分:174)
您只需要一行:
/* @var $varName Type_Name */
请参阅NetBeans PHP博客中的这篇文章:https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in
答案 1 :(得分:23)
我知道这是一个较旧的问题,但我正在为Eclipse / Zend Studio寻找类似的答案,这也解决了它。
**请注意,它必须在一行中以明确的方式打开和关闭......
/* @var $varName Type_Name */
没有其他格式是否......
/**
* @var $varName Type_Name
*/
或......
// @var $varName Type_Name
似乎完全有效。希望有所帮助。
答案 2 :(得分:8)
您是否想要记录那些讨厌的魔法变量? (我做过;这个问题目前在谷歌排名最高。我希望这有助于某人!)
@property
标记允许您记录 magic php变量 - 使用__get()
和__set()
实现的变量。标签应该在类定义之前的文档中使用:
/**
* Class Contact
* @property string $firstName
* @property string $lastName
*/
class Contact extends Model {
...
此符号触发自动完成,在Netbeans 8.1和PhpStorm 2016.1中进行测试。
答案 3 :(得分:2)
在netbeans 8.0.2中, vdoc 模板为您提供:
/* @var $variable type */
然而,Netbeans不会识别这一点,也不会为您的对象提供正确的自动完成列表。而是在变量声明之前使用它:
/** @var objectType $varName */
我还没有真正看到库存 vdoc 模板,特别是对于将用作PDO或PDOStatement对象的类变量。
我使用的一个解决方案实际上就是进入 工具/选项/编辑器/代码模板(选择PHP作为您的语言),并添加一个新模板。我打电话给我暗示。然后在Expanded Text下,使用以下模板:
/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */
答案 4 :(得分:2)
根据this bug report,语法将在NetBeans 9中更改:
/* @var $variable VarType */ // vdoc1 (legacy syntax)
/** @var VarType $variable */ // vdoc (new syntax)
此外,值得一提的是,您可以将[]
附加到类名称以指示对象数组:
/* @var $foos Foo[] */
$foos = // ...
foreach ($foos as $foo) {
// $foo will be hinted as Foo here
}
不要忘记您的use
声明,例如use Foo;
答案 5 :(得分:0)
对于NetBeans IDE 8.2语法如下:
class foobar{
/** @var string $myvar: optional description here **/
protected static $myvar;
}
这将至少为静态变量正确提供类型提示。