我在我的php项目中使用Laravel ORM,并且在我的代码中使用了很多动态。 E.g。
UserModel::whereName('Foo')->whereGender(1)->first();
当我使用PhpStorm 2016.1时(我认为)我可以通过执行以下操作将PHPDoc字符串添加到类UserModel
以使代码完成whereName
以及以下whereGender
:
/**
* class UserModel
* @method static $this whereName($val)
* @method static $this whereGender($val)
*/
class UserModel {
.......
}
但是在我升级到PhpStorm 2016.2.2的最新版本之后。第二种方法whereGender
不会出现在代码完成列表中。在JetBrains网站上,我找到了2016.2的新功能
静态方法从完成列表中过滤掉。
我的问题是:在whereGender
来电之后,有没有办法让PhpStorm完成whereName
?
更新
必须调用两次完成以获取静态方法。 https://youtrack.jetbrains.com/issue/WI-9403#comment=27-1490430
答案 0 :(得分:3)
<强> TL;博士强>:
要查看完成情况,请在键入->
后按CTRL + SPACE
以查看包含静态方法的完整完成列表。如果您使用的是Mac并且与语言切换冲突,请更改以下键组合:
Preferences->Keymap:
Main Menu->Code->Completion->Basic
虽然有一个真正的用例,但调用静态/非静态方法并不常见,因此phpstorm删除它,如下所述:https://blog.jetbrains.com/phpstorm/2016/07/completion-changes-in-phpstorm/
下一个完成更改是在
$this->
的上下文中调用完成时从完成列表中删除静态方法。这种变化发生在几年前用户打开的票证的结果。使用$this->
调用静态方法是一个完全有效的用例,但在PHP中并没有广泛使用。虽然这在当时看起来是一个好主意,但它在PHPUnit中编写断言会产生一些意想不到的后果。
因此无论你如何编写phpdoc,phpstorm都不会在第一次调用&#34;上显示静态方法作为实例方法。您需要再次手动调用它(使用CTRL + Space)来查看它。所以这就是&#34;第二次调用&#34;装置
来源: