正如它所说,可以回答我自己的问题并找到一些技巧来在 Eclipse IDE(用于 PHP)中实现代码完成,我想与其他用户分享。
我在这里找到了一些解决方案,但不知何故,我无法使 doxygen 与这些声明的属性一起正常工作,我找到了一些解决方法。
问题
如果您使用魔术方法,特别是对于属性重载__get()
,,__set()
(可能它也涉及__call()
和__invoke()
),则存在一个问题,即属性名称以某种方式定义为动态(作为变量变量)并且在任何范围内都不可见。这是可能的,因为它们的名称作为字符串传递并且可以以任何方式进行操作。
所以不可能在代码完成中拥有那些神奇地访问的属性(或方法),在我的情况下(不知道为什么,但没关系),在类的生成文档中。
(代码完成是指编辑器通过显示所有可能的属性和方法来帮助程序员,从而避免一些错误。)
考虑我们有以下类:
/**
* Test class
*/
class myClass {
private $field_someValue1;
private $field_someValue2;
/**
* Magic method getter for hidden properties.
* @param string $name
* @return mixed
*/
public function __get($name){
switch($name){
case 'foo': return $this->$field_someValue1; break;
case 'bar': return $this->$field_someValue2; break;
default:
// handle non-existing property error here
}
}
/**
* Simply do nothing, but be some public part of the class.
* @return void
*/
public function doNothing(){
}
}
$a = new myClass();
因此,在我的代码中,当我键入时$a->
,编辑器应该通过提示我的对象有两个属性来帮助我:foo
和bar
. 当然它不能显示$field_someValue1
,$field_someValue2
因为它们是私人的。
如何让 Eclipse 帮助我?