チュートリアル: ライブテンプレートの作成
PHPアプリケーションを開発する際、よく繰り返されるタスクはコントローラークラスとその中のアクションを作成することです。 このチュートリアルでは、これを自動化するためのライブテンプレートを作成する方法について説明します。
コントローラークラスのライブテンプレートを作成する
コントローラークラスから始めましょう。 コントローラークラスは、通常、 BlogController のように名前が付けられ、基本的な コントローラー クラスを拡張します。
設定 ダイアログ (Ctrl+Alt+S) で、 を選択します。
をクリックして新しいライブテンプレートを作成します。 このテンプレートには、
sc(サンプルコントローラーの略)、説明、テンプレートが適用されるコンテキスト(この場合は PHP)、および次のテキストを指定します:class $Name$Controller extends Controller { $END$ }
結果のテンプレートは次のようになります。

これで、 php ファイルを開いて(または新しいファイルを作成して)、作成した sc ライブテンプレートを使用できます。 テンプレートコードが展開されたら、コントローラーのクラス名を指定し、 Tab を押して、キャレットを $END$ 変数の位置に移動します。

変数と式
これまで、カスタム変数 $Name$ と、PhpStorm が提供する特別な変数 $END$ を使ってきました。 コントローラークラスは、通常、それが存在する php ファイルとまったく同じ命名がされます。例えば、 MyController.php ファイルには MyController コントローラークラスが含まれます。 ライブテンプレートを使用すると、PhpStorm でファイル名に基づいてコントローラーの命名を事前に自動入力できます。
設定 ダイアログ (Ctrl+Alt+S) で、 を選択します。 次に、前に作成した
scテンプレートを選択します。scテンプレートのテキストを次のように変更します。class $Name$ extends Controller { $END$ }変数の編集… をクリックして、IDE が
$Name$を変数として認識していることを確認します。$Name$変数を次のように構成します。デフォルト値と式を指定します。 この場合は
fileNameWithoutExtension()式を使います。これにより、 .php 拡張機能のないファイル名が返されます。定義済みはスキップ チェックボックスを選択して、式が値を提供するときに、エディターでライブテンプレートを使用するときに自分で値を提供する必要がないようにします。

ライブテンプレートを適用すると、クラスはファイル名を継承し、キャレットはすぐにクラス本体内に配置されます。

式で変数を使用する
定義されたテンプレート変数を式の引数として使用できます。 例として、 __toString メソッド定義を含むようにテンプレートを拡張してみましょう。
scテンプレートのテキストを次のように変更します。class $NAME$ extends Controller { public $$$PROPERTY$; public function __toString() { return $this->$PROPERTY$; } $END$ }変数の編集… をクリック
$PROPERTY$変数を次のように構成します。デフォルト値と式を指定します。 この場合は
decapitalize(NAME)式を使います。これにより、$NAME$変数の値が先頭小文字で返されます。つまり、 .php 拡張機能のないクラス名となります。定義済みはスキップ チェックボックスを選択して、式が値を提供するときに、エディターでライブテンプレートを使用するときに自分で値を提供する必要がないようにします。

テンプレートを適用すると、作成されたクラスにプロパティと __toString メソッド定義が含まれるようになります。

コントローラーアクションのライブテンプレートを作成する
sc テンプレートは、設定 ダイアログから直接作成できるほどシンプルでした。 ただし、より複雑なケースでは、エディターでコードを記述し、それからテンプレートを作成する方がおそらく簡単です。
基本的なコントローラーアクションのテンプレートを作成しましょう。
コードエディターで、アプリケーションを作成するときと同じようにコードを記述します。
class SampleController extends Controller { public function indexAction() { return $this->render(''); } }作成した
indexActionメソッドをエディターで選択し、メインメニューで を選択します。開いた 「ライブテンプレートとして保存…」 ダイアログでは、このテンプレートのコンテキストが、エディターで作業していたファイルの種類に基づいて自動的に設定されることに注意してください。

テンプレートのテキストを次のように変更して、テンプレートを構成し、変数を追加します。
public function $Action$Action() { $END$ return $this->render('$Bundle$:$Folder$:$Action$.html.twig'); }「変数の編集… 」をクリックし、
$Folder$変数の式と$Bundle$変数のデフォルト値を指定します。 デフォルト値は二重引用符で囲む必要があることに注意してください。
変更を適用したら、 sa テンプレートを使用してコントローラーアクションを生成できます。

囲みテンプレートを作成する
場合によっては、既存のコードをテンプレートで「囲む」ことが有用な場合があります。 名前が示すように、 囲みテンプレートはあなたにそれをさせます。 ライブテンプレートとまったく同じ方法で作成できますが、さらに $SELECTION$ 変数を使用する必要があります。
例として、選択したコードを try/catch ブロックにラップし、例外を記録する囲みテンプレートを作成します。
次のテキストを含むライブテンプレートを作成します(ダブルドル記号
$$が、PHP の$ドル記号をエスケープするために使われていることに注意してください):try { $SELECTION$ } catch ($TYPE$ $$$VARIABLENAME$) { Logger::log($$$VARIABLENAME$); $END$ }テンプレートには次の変数が使用されています。
$SELECTION$エディターで選択されたコードを示します。
$TYPE$例外タイプのプレースホルダーとして機能します。
$VARIABLENAME$例外変数名のプレースホルダとして機能します。
$END$テンプレートが展開された後のキャレット位置を示します。
変数の編集… ダイアログで、
$TYPE$にcomplete()式を指定して、テンプレートを展開すると完了がトリガーされるようにします。 さらに、$TYPE$および$VARIABLENAME$のデフォルト値を二重引用符で囲んで指定します。
変更を適用した後、下記のように囲みテンプレートを使用できます。コード領域を選択し、 Ctrl+Alt+J を押して、新たに作成したテンプレートを選択します。
その結果、コードはテンプレートにラップされ、例外型で完了がトリガーされ、例外変数の名前はデフォルトで $exception になります。 正しい型を選択し、 Tab を押すと、ロギングステートメントのすぐ下にある catch 本体に表示されます。
