PHPの閉じタグ ?> の後に改行を出力する方法

これ常識なのかなあ。
知らなかったので書いときます。

PHP では
<?php?> で囲まれた部分が PHP のコード、
それ以外の部分が HTHL と見なされる。

「デザインとロジックを分離」すれば
両者が混在することはないんだけど、
たとえば CakePHP の view の中には
どうしても PHP のコードを書くことになる。

こういう場合にちょっと困るのが
PHP の閉じタグ ?> のあとの改行が無視される点。

例えばこう書くと

<tr>
  <th>おなまえ</th>
  <td>
    <?php echo $form->text('User.name'); ?>
  </td>
</tr>

こんなふう(一部略)に出力されてしまって

<tr>
  <th>おなまえ</th>
  <td>
    <input name="data&#91;User&#93;&#91;name&#93;" type="text" />  </td>
</tr>

何だか見栄えがよくない。

そんなこまいことは気にせずに
さっさと開発を進めた方がいいとも思うんだけど、
せめてインデントくらいは揃えたいところ。

これを解決するのにすぐ思いつく方法は次の2つ。

  • ?> の改行後にもうひとつ空行を入れる。
  • PHP を閉じる前に改行コードを出力する。

でもそれだと今度は
PHP のコードの方が見づらくなってしまうし
余計なものが入るから何だかスマートじゃない。

これはもう仕方ないかなあ、と思っていたのだが、
もう一つ方法があることを知った。

  • ?> の後にスペースを入れる。

つまりこういうこと。

<tr>
  <th>おなまえ</th>
  <td>
    <?php echo $form->text('User.name'); ?>_
  </td>
</tr>

_ の部分に半角スペースをひとつ入れるという意味ね。

これでちゃんと ?> の後に改行が入った。

<tr>
  <th>おなまえ</th>
  <td>
    <input name="data&#91;User&#93;&#91;name&#93;" type="text" />
  </td>
</tr>

うん、もっとスマートじゃない。やめよう。

関連エントリ

  • このエントリーをはてなブックマークに追加

One Response to “PHPの閉じタグ ?> の後に改行を出力する方法”

  • 名無し

    2011/10/09 02:25

    なるほど、確かに綺麗ですね!