Dan*_*ugg 8 php methods netbeans autocomplete class
NetBeans 7.0上的快速版本和PHP的自动完成功能;
我试图弄清楚(如果可能的话)如何__get()在类中强制实现返回(引用)某种类型,类型__get()是实现的同一类,总是如此.
现在,我有(在View):
/**
* @param string $key
* @return View
*/
public function __get($key){
return $this->getView($key);
}
Run Code Online (Sandbox Code Playgroud)
像这样访问:
$view->foo-> // should populate with methods from View
^
Run Code Online (Sandbox Code Playgroud)
现在我一直在阅读@property,但我不确定这对我正在做的事情是否正确.另一件事是(如果可能的话,这将是一个很好的功能)通常是嵌套的视图,所以在我的实现中看到这个并不罕见:
$view->foo->bar->baz-> // should populate with methods from View
^
Run Code Online (Sandbox Code Playgroud)
关于如何强迫这个,或者我被卡住的任何想法?
更新:
因此@property似乎正朝着正确的方向前进,但似乎没有支持通配名称.那么为了详细说明我的问题,有没有人知道任何NetBeans插件,或者没有文档(或者只是很难找到)PHPDoc语法来支持通配符@property名称?
我正在考虑以下其中一个方向:
/**
* @property View *
* @property View ...
* @property View $var,...
*/
Run Code Online (Sandbox Code Playgroud)
当然,这些变化都不起作用,但最后看起来最符合逻辑,因为它们似乎支持可变参数函数参数列表的类似语法.
Netbeans可以@property通过以下示例中显示的方式为您实现这种魔力.
正如您已经想到的那样,您必须在doc块中定义每个属性.
$x->y->z->view下面列出了您的示例的另一种可能解决方案.
<?php
/**
* @property Bar $prop
*/
class foo {
}
class bar {
public function xyz() {
}
public function abc() {
}
}
$x = new foo();
$x->prop->
Run Code Online (Sandbox Code Playgroud)
当您将光标移动到此处并按ctrl + space时,您将看到:

如果您想要更长的结果链自动完成,您也可以使用
/** @var Viewclass $foo */
$foo = $x->y->z->view;
$foo->autoCompleteWorksNow();
Run Code Online (Sandbox Code Playgroud)
代码中的任何位置.