PHPの行コメントは終了タグをコメントアウトしない。
<?php //echo 'hoge'; ?>
fuga
上記コードはfugaを出力する。(syntax errorにならない)
普段は別に困らないし、<?php# コメント ?>
みたいな短い書き方でコメントをテンプレートに埋め込めて便利なのだが、これが原因で思わぬ挙動を起こす事がある。
<?php
echo '<?php', PHP_EOL;
echo '?>', PHP_EOL;
このコードは3行目を//
でコメントアウトすると、コメントアウトしきれず、終了タグ以降の文字列が出力されてしまう。
<?php
echo '<?php', PHP_EOL;
//echo '?>', PHP_EOL;
実行すると、以下が出力される。
', PHP_EOL;
この不具合にハマると原因が分かりにくいので、できれば予防的な書き方をしておきたい。
予防方法としては、?>
などの終了タグの文字列がプログラム中に登場しないようにしておく方が無難。わざと文字列を分割して書くとかかな。
<?php
echo '<?php', PHP_EOL;
echo '?'.'>', PHP_EOL;
JavaScript中の</script>
が文脈に関係なく問題になるのと同じですね。