テンプレート、修飾子、スクリプト制約を検索する
構造検索用のテンプレートを作成するときは、基本的にスクリプトを作成します。 スクリプト作成プロセスを簡素化するために、PhpStorm は、検索テンプレートのプロトタイプとして使用できる事前定義された 検索テンプレートのリストを提供します。


既存の検索と置換テンプレートのリストにアクセスする方法については、 構造的な検索と置換のセクションを参照してください。
有効な検索または置換テンプレートは、サポートされている次の言語構造の 1 つを表します。
式、たとえば
"John" . " " . "Doe"ステートメント、または一連のステートメント、たとえば
$people[] = new Person('Trillian');クラス指定子、たとえば
class Engine implements IEngineコメントを行またはブロックします(例:
/** Created in PhpStorm */)。
検索テンプレートでは、以下の簡略化を使用できます。
メソッド本文は省略できます。
テンプレートと制約フィールドでは、完全修飾名の代わりに短いクラス名が使用されます。
class $Class$をテンプレートとして使用すると、匿名クラスも検索されます。コメントおよびドキュメントコメントのテンプレートには、正しいコメントと PHPDoc/JSDoc 構文を持つ変数と構成要素を含める必要があります。
各検索または置換テンプレートは、条件 (修飾子) を追加して検索結果を絞り込むことができる変数 $variable_name$ で構成されます。 修飾子は、検索テンプレートの変数に依存します。

カウント修飾子
数える 修飾子は、出現回数を指定します。
例: class $a$ {public function $b$()} 検索テンプレートで、 $b$ 変数の場合、 数える 修飾子フィールドに最小数と最大数を指定します。 無制限の最大数を設定するには、修飾子フィールドに空の値を指定します。

PhpStorm は変数に [0,∞] を追加し、指定された範囲の数値を検索します。
参照修飾子
リファレンス 修飾子を使用すると、変数内の他の検索テンプレートを参照できます。
参照には常に事前設定済みまたは保存済みのテンプレートの名前が含まれ、自動補完を利用してこのフィールドを入力できます。
例: クラスの静的メソッドを検索するための検索テンプレートを定義し、それを別のテンプレートで参照して、そのような静的メソッドへの誤ったインスタンス呼び出しを検出することができます。

型修飾子
タイプ 修飾子は、指定された変数に期待される値または式の型を追加します。
次の修飾子の値を使用して、対応する型の変数を見つけます。
文字列intまたはintegerdoubleまたはfloatブール値arraynull
特定のクラスのインスタンスを見つけるには、先頭の \ を含む FQN を タイプ 修飾子値として指定します。
例: $b$ 変数の場合、 タイプ 修飾子フィールドに \ExampleClass と入力します。
PhpStorm は ExampleClass インスタンス化を検索します。

テキストフィルター
テキスト 修飾子は、正規表現またはプレーンテキストに対して変数をチェックします。
例: 明示的な マジックメソッド(英語)呼び出しを検出するには、 $a$->$b$() テンプレートを使用し、 $b$ 変数の テキスト 修飾子を ^__.+$ 正規表現に設定します。

スクリプト制約
スクリプト 修飾子は、Groovy スクリプト制約を検索テンプレートに追加します。 スクリプト制約は、特定の言語構造を検索するときに使用されます。
例えば、指定した数のパラメーターを持つコンストラクターや、指定した可視性修飾子を持つメンバーなどです。
テンプレートで使用されているすべての変数は、 スクリプト制約からアクセスできます。 変数にスクリプト制約を追加すると、PhpStormはそれをPSIツリーと照合します。この変数は実際には PSIツリー内のノードです。
たとえば、メソッドにマッチする変数、 toString() メソッドがあるとします。 この変数は実際には PsiMethod ノードです。 variable.parent を取得すると、 PsiClass ノードなどが生成されます。 variable.text はメソッドのテキスト全体を表示します。 メソッドの名前だけが必要な場合は、 variable.name を使用できます。
別のケースでは、構造検索と置換変数は、変数、 PsiReferenceExpression への参照など、一部の式に一致することがあります。 式には名前はありませんが、式のテキスト全体を検索すると、その変数が参照している変数の名前が表示されます。
次の既存テンプレートで使用されているスクリプト制約の構文を確認できます:
定数パラメーターを使用したサンプルメソッドの呼び出し
クラス
パラメーターのないコンストラクターを持つクラス
final でない静的フィールド
未実装または未拡張のインターフェース
フィールド / 変数の読み込み
名テンプレートが更新されたフィールド / 変数