改行が復元されないことがある
自分が遭遇していた事象は PHP の仕様のようだ。コンパイルキャッシュは期待通りの出力をしている。
http://php.benscom.com/manual/ja/faq.using.php#faq.using.newlines
以下、引用
改行されないのですが? <pre> <?php echo "これは1行目"; ?> <?php echo "この行は改行に続いて出力されるはず"; ?> </pre> PHPでは、"?>"か"?>\n"(\nは改行を表します)をPHPのコードブロックの終端と見なします。このため、コードブロック終端の改行記号は省略され、表示される文は1行になります。つまり、改行をさせるためには、PHPのコードブロックの終端の後にもう1つ改行を挿入する必要があるということです。 なぜPHPはこのようなことをするのでしょうか?なぜならHTMLを出力する場合にはこの方が都合のよいことが多いからです。もしとても長い1行を出力しなければならない場合に、改行が解釈されてしまうとしたらどうでしょう。ソースコードの1行もとても読めないくらい長いものになってしまいます。
まー、言わんとしてることはわかる、ような気もする。が、釈然としない気持ちも。
さて、どうしたものか。
結論、対処しない。
改行直前の <{$hoge}> で改行を復元したい場合は $hoge = "$foo¥n" とするか、<{add_newline($hoge)}> などの helper メソッドを用意して対応、してくだされ。
制御構造の直前や直後で改行が復元されないことがある。 HTML のテンプレートとしては問題ないが、メールのテンプレートや、バッチの出力結果、ソースコードの雛形などで意図した結果にならず困るコトがある。