LoginSignup
9
9

More than 5 years have passed since last update.

PHPの終了タグと行コメント

Posted at

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>が文脈に関係なく問題になるのと同じですね。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9