Netbeans中的变量类型提示(PHP)

时间:2009-11-25 17:16:05

标签: php phpdoc php-ide

只是好奇netbeans是否有办法为常规变量提供类型提示,以便intellisense选择它。我知道你可以为类属性,函数参数,返回类型等做这些,但我无法弄清楚如何为常规变量做到这一点。在你有一个可以返回不同对象类型的方法(比如服务定位器)的情况下,这会非常有用。

例如:

/**
 * @var Some_Service $someService
 */
$someService = ServiceLocator::locate('someService');

之后使用$ someService,netbeans将提供Some_Service类中定义的所有可用方法。

6 个答案:

答案 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中进行测试。

enter image description here

答案 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;
}

这将至少为静态变量正确提供类型提示。