この記事は、 CakePHP Advent Calendar 2019 3日目の記事です、が、6日に公開しました。
PhpStorm Live Template?
公式にヘルプがあるよ。
CakePHPのビューテンプレートを書くのをちょっと楽にする
CakePHPのテンプレートは素のPHPです。こんな感じですね。
<h1 class="post-title"><?= h($post->title) ?></h1>
<div class="post-content">
<?= nl2br(h($post->body)) ?>
</div>
<?php if ($post->tags) : ?>
<ul class="post-tags">
<?php foreach ($post->tags as $tag) : ?>
<li><?= h($tag->name) ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
テンプレートを書くとき、 <?= やら、 <?php if やら <?php foreach をよく書いていると思います。
毎回毎回、これを書くのだるいですよね。閉じタグまで含めると特に。
そんなときは、PhpStormのLive Templatesを使って楽をしましょう。
ライブテンプレートを追加する
Preferences > Editor > Live Templates でライブテンプレートを追加します。
追加の仕方はヘルプを読んでね。
ポイントはHTMLコンテキストでの適用にすること。ダイアログの下の方のここをクリックして設定するんだ。
<?=
pe<tabキー> で、 <?= になるように設定するよ。
Abbreviation: pe
Description: php short echo (これは説明文なので適当でいい
Template text:
<?= $END$ ?>
$END$ は、変換後にキャレットがその位置に移動するんだ。
<?php if () : ?><?php endif; ?>
pif<tabキー> で、 ifブロックを生成できるようにするよ。
Abbreviation: pif
Description: php if (これは説明文なので適当でいい
Template text:
<?php if ($CONDITIONS$) : ?>
$END$
<?php endif; ?>
<?php foreach () : ?><?php endforeach; ?>
pfore<tabキー> で、foreachブロックを生成できるようにするよ。
これは、ライブテンプレートのPHPの中に、fore, forek があるからそれをコピーして作成するといいよ。
キーなし
Abbreviation: pfore
Description: php foreach(iterable_expr as $value) {...} (これは説明文なので適当でいい
Template text:
<?php foreach ($ITERABLE$ as $VAR_VALUE$) : ?>
$END$
<?php endforeach; ?>
キーあり
Abbreviation: pforek
Description: php foreach(iterable_expr as $key => $value) {...} (これは説明文なので適当でいい
Template text:
<?php foreach ($ITERABLE$ as $VAR_KEY$ => $VAR_VALUE$) : ?>
$END$
<?php endforeach; ?>
おまけ
PhpStorm 2019.3 で、<? って入力すると <?php に展開するようになったけど、<?= を入力したいときにとても困る。
無効にするオプションは検討されているみたいだけど、実装されるまでの間は次のLive Templateを設定しておくといいかも。
Abbreviation: <?php=
Description: php short echo open (これは説明文なので適当でいい
Template text:
<?= $END$ ?>
コンテキストはPHPで。
まとめ
CakePHP あんまり関係なかった。