2017-11-01 10 views
1

私は(Zend\Filter\Inflectorを使用して)次のコードを記述する必要があります。PhpStorm - 文字列の提案として、クラス名

$inflector = new Inflector(':string'); 
    $inflector->setRules([ 
     ':string' => [ 
      new StringToLower(), 
      new UnderscoreToSeparator(), 
      new DashToCamelCase(), 
      new UpperCaseWords(), 
     ] 
    ]); 

ご覧のとおり、それはすぐに(Zendのフィルターインターフェイス以下)のクラスをインスタンス化し、4回newキーワードを使用しています。この場合、オートコンプリートはうまく機能し、PhpStormはnewの後に入力したかったものを簡単に見つけました。工場を使用して

しかし、よりよい表記は、代わりにnewを使用して直接インスタンス化のため、文字列を使用している:

$inflector = new Inflector(':string'); 
    $inflector->setRules([ 
     ':string' => [ 
      'StringToLower', 
      'UnderscoreToSeparator', 
      'DashToCamelCase', 
      'UpperCaseWords', 
     ] 
    ]); 

は、これらの文字列のオートコンプリートを持ってする方法はありますか?たぶんいくつかの注釈のヒントか何か?

答えて

2

なぜUpperCaseWords::classを使用しませんか?結果の値(実行時に利用可能)はFQNになります。

私はZend Frameworkに慣れていないので、Zend\Filter\InflectorがFQNを受け入れるか、またはクラス名のみに制限されているかどうかはわかりません(FQNを受け入れる必要があります...したがって、期待される動作です)。

利点:リファクタリング/検索の用途もサポートされます(これはコードであり、文字列ではありません)。いずれの場合においても


:文字列内のクラス名補完は2017年1月4日以来を動作するはずですが(現在の安定した2017年2月4日に、ここで正常に動作します)。あなただけのコード補完をもう一度起動

(例えばはCtrl +スペース倍(またはあなたがCode | Completion | Basic用/ OS)をコンピュータ上でそこに持っている任意の他のショートカット)..またはちょうどはCtrl + Altキー+スペースストレートを使用離れて(クラス名補完)。

文字列の先頭で補完が呼び出された場合は、明らかに機能します。途中にある場合は(例:"use [CLASS_NAME_EXPECTED_HERE]")、手動で全体を入力するか、他の完了方法を試してください(例:Cyclic Expand Word)。

関連する問題