switch文の仕様

<?php switch (1): ?>
  <?php case 1: ?>
  1
  <?php break ?>

  <?php case 2: ?>
  2
  <?php break ?>
<?php endswitch ?>

さて、上記のようなプログラムを書いた場合、普通に考えれば1が出力されると思います。ところが結果は、

PHP Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT

このようにエラーになります。原因はswitchとcaseの間にスペースがあることらしいのですが、どういうことかというと・・・

Actually this is not bug. You can't have anything between
switch()..case.. ever. It's not valid.

PHP :: Doc Bug #25667 :: Strange switch-case behaviour

いわく、switchとcaseの間にecho " ";してるのと一緒で、バグではないとのことです。ということでテンプレートとかでswitchを使うときは気をつけましょう。

やっぱり<?php xxx ?>って長いな。