我想知道如何使用继承类的自动完成。例如,我有这样的代码:
<?php
class A {
/**
* @return $this
*/
function a(){
return $this;
}
/**
* @return $this
*/
function b(){
return $this;
}
}
class B extends A{
function c() {
}
}
$object = new b();
$object->a()->b()->c();
?>
当我尝试使用ctrl + click导航时,我可以找到a和b功能,但我怎么能到达c?
感谢。
答案 0 :(得分:3)
您必须使用Eclipse的正确PHPDoc样式文档来添加自动完成功能。在@return语句中,您必须指出返回的实际类型(类的名称),而不是变量:
<?php
class A {
/**
* @return A
*/
function a(){
return $this;
}
/**
* @return A
*/
function b(){
return $this;
}
}
class B extends A{
/**
* @return B
*/
function c() {
}
}
$object = new B();
$object->a()->b()->c();
?>
现在在你的例子中,问题是,它不能真正用于子类,因为文档说你例如for $ object-&gt; a()返回一个A类的实例。因此,自动完成不会显示B类的方法(你可以调用它们)。