2016-11-01 3 views
4

私は私のPHPプロジェクトでLaravel ORMを使用しています。私は多くの動的コードを使用しています。例えば。PhpStorm静的メソッドコード補完

UserModel::whereName('Foo')->whereGender(1)->first(); 

私は(私が思う)私は次のようにしてwhereNameと、次のwhereGenderでコード補完を持っているクラスUserModelにたPHPDoc文字列を追加することができますPhpStorm 2016.1を使用します。

/** 
* class UserModel 
* @method static $this whereName($val) 
* @method static $this whereGender($val) 
*/ 
class UserModel { 
....... 
} 

しかし、私の後PhpStorm 2016.2.2の最新バージョンにアップグレードしてください。 2番目の方法whereGenderはコード補完リストには表示されません。 JetBrainsのウェブサイトで、私は2016.2の新機能を見つけました。

静的メソッドは完了リストから除外されています。

私の質問は:PhpStormはwhereName呼び出しの後に完了whereGenderを与えるようにする方法はありますか?

更新:

完了は、静的メソッドを取得するために二回呼び出されることがあります。 https://youtrack.jetbrains.com/issue/WI-9403#comment=27-1490430

+0

うーん。私の2016.2。2私はそれに問題がありません –

+0

私はこのアプローチをテストしませんが、私はあなたのコード補完を承認するためにこのgithubリポジトリを使用することができると思うhttps://github.com/barryvdh/laravel-ide-helper –

+0

@LionelChan UserModelの同じクラスファイルで補完をテストしますか?私はUserModelのメソッドをコーディングするときに必要なものを手に入れることができますが、他のファイルにコードを書くと失敗します。 – amow

答えて

2

TL; DR

あなたが->を入力した後、完了を表示するには、静的メソッドを持つ完全な補完リストを見るためにCTRL + SPACEを押す必要があります。あなたがMac上で、それはあなたの言語の切り替えと競合する場合は、でキーコンボを変更:

Preferences->Keymap: 
Main Menu->Code->Completion->Basic 

このため、実際のユースケースがあるが、この方法静的/非静的を呼び出すことはできませんhttps://blog.jetbrains.com/phpstorm/2016/07/completion-changes-in-phpstorm/

次完了変更が完了が$this->のコンテキストで呼び出されたとき完了リストから静的メソッドを除去することであった。それをここに述べたように一般的な、したがってphpstormは、それを落としました。この変更は、数年前にユーザーが開いたチケットの結果として発生しました。 $this->を使用して静的メソッドを呼び出すことは、完全に有効なユースケースですが、PHPでは広く使用されていません。これは当時の良いアイデアのように思えましたが、PHPUnitで書かれたアサーションをもう少し苦痛にする意図しない結果がありました。

phpdocの書き方にかかわらず、phpstormは静的メソッドを「最初の呼び出し」のインスタンスメソッドとして表示しません。手動でCTRL +スペースを使用して再度呼び出す必要があります。これが「第2の呼び出し」の意味です。

出典:奇妙な