【发布时间】:2011-11-29 00:02:04
【问题描述】:
在 PhpStorm 中,如果我创建一个对象,那么我会在该对象上自动完成所有工作正常:
$object = new MyClass();
$object->getNa...
会自动完成到
$object->getName();
到目前为止一切都很好,但是如果我通过第一种方法返回了一个对象,那么自动完成将无法正常工作。
$car->getDriver()->getNam...
将显示一个空列表。 getDriver 方法将其 PHPDoc @return 标记设置为“Driver”,但在其他一些 IDE 中,这可以实现正确的自动完成。
想知道我是否遗漏了某个设置,或者 PhpStorm 是否还没有提供这种高级自动完成功能?
【问题讨论】:
-
mmh,我的 PHPStorm 确实更深入了。您确定 IDE 知道“更深”的类吗?
-
不是一个直接的答案,但 PHP IDE 肯定应该这样做。我使用 NetBeans,对于结构良好的项目(类中没有任何会扰乱类扫描器的语法错误),它可以很好地完成嵌套自动完成。
-
您是否为 getDriver 函数正确设置了“@return 类型”?
-
是的,@return 类型提示都在那里。这是一个 symfony 项目,它通常不适用于 symfony 类。我对此感到有些困惑,你们所有人似乎都可以正常工作。这是我唯一想完全切换到 PhpStorm 的事情......
-
您在示例中切换了上下文。起初,您使用的是
$object,它被显式分配了一个MyClass的实例,但在第二个示例中,您使用的是$car,我们看不到它的初始化。或许这里的问题不是PhpStorm不知道getDriver()的返回值,而是不知道$car的类型。
标签: php autocomplete phpstorm