在我的代码中,我使用了这样的注册表模式:
$data = Registry::get('classA')->methodOfClassA($param1, param2);
Registry类在内部数组中存储某些类的实例,因此在我的代码的任何地方,我都可以调用类方法来处理上面的方便函数。
但是,问题是当我输入时,PHP-storm不会自动完成:
Registry::get('classA')->
而且,更糟糕的是,当我将鼠标光标悬停在mac-button(窗口上的控制按钮模拟)时,它不会声明方法“methodOfClassA”
我想,IDE AI并不是那么容易识别这样的案例,但也许有一些技巧可以用来做到这一点?硬编码类+某些文件中的方法名称等等......
至少,当我点击方法名称时,我希望它理解去方法声明...
有任何建议吗?
答案 0 :(得分:2)
http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata
此链接描述了所有内容 - 它已被多个项目/框架/代码生成助手(例如Magento)使用(其他一些可以在实际票证的注释中找到)。
对于其他情况,您可能需要查看 DynamicReturnTypePlugin 插件(Settings | Plugins | Browse repositories...
) - 没有尝试过自己,因此无法评论它有多好/快/迟。
答案 1 :(得分:0)
您始终可以分两步指示变量类型:
/** @var $foo MyClass */
$foo = $this->get('MyClass');
$foo->bar(); // autocomplete works