1

在我的代码中,我使用这样的注册表模式:

$data = Registry::get('classA')->methodOfClassA($param1, param2);

Registry 类将某些类的实例存储在内部数组中,因此在我的代码的任何位置,我都可以调用类方法来实现上面一行中的方便功能。

但是,问题是当我输入时 PHP-storm 不会自动完成:

Registry::get('classA')->

而且,更糟糕的是,当我将鼠标光标悬停在 mac 按钮上时,它不会声明方法“methodOfClassA”(类似于 Windows 上的控制按钮)

我想,IDE AI 不太好识别这样的情况,但也许有一些技巧可以很难做到这一点?在某些文件中硬编码类+方法名称等等......

至少,当我单击方法名称时,我希望它理解去方法声明......

有什么建议吗?

4

2 回答 2

2

http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata

这个链接描述了这一切——它已经被多个项目/框架/代码生成助手使用,例如 Magento(在实际票证的评论中可以找到其他一些)。

对于其他情况,您可能需要查看DynamicReturnTypePlugin插件(Settings | Plugins | Browse repositories...)——我自己没有尝试过,因此无法评论它的好/快/滞后。

于 2013-10-24T11:39:15.513 回答
0

您始终可以分两步指示变量类型:

/** @var $foo MyClass */
$foo = $this->get('MyClass');
$foo->bar(); // autocomplete works
于 2013-10-24T11:31:38.273 回答