WordPressユーザーのbaserCMS覚え書き


テンプレートタグでのセミコロンの扱い

WordPressもbaserCMSも、テーマのテンプレートファイルを作る際には「テンプレートタグ」と呼ばれるものを組み込んで表示内容を動的に制御します。テンプレートタグの実体はPHPの関数なので、baserCMSでは「関数」という呼び方をするようです。

どちらのテンプレートタグでも

<?php ~ ?>

という書式で記述するのですが、両者の間では微妙な記述の違いがあります。それは

テンプレートタグにおけるセミコロンの扱い

です。同じテンプレートタグでも、

  • WordPress……セミコロンをつけて閉じる
  • baserCMS……セミコロンをつけないで閉じる

ことが、公式のリファレンスに書かれています。

PHPマニュアルの「命令の分離」の項にはこのように書かれています。

PHP コードの最終行にはセミコロンを記述する必要はありません。

PHPのコード(「文」ともいう)が複数行にわたる場合は、その区切りがコンピュータにわかるよう各行をセミコロンで閉じる必要があります。しかし、テンプレートタグのように1行で終わるものについては、セミコロンで閉じない記述もOKなのです。

baserCMSでは、そうしたPHPの仕様にそってテンプレートタグを記述しているというわけです(余分な文字を打たなくてもいいですし)。

ただ、気をつけないといけないのが、たとえば if 文などで条件分岐させてコードが複数行にわたる場合ですね。この場合、テンプレートタグは複数行にわたるコードの一部となるので、行の最後をセミコロンで閉じないとエラーになってしまいます(たいてい、ページが真っ白になってしまう)。

個人的には、単一行でもセミコロンで閉じるWordPress方式(?)がうっかりミスがなくてよさげかなあ、と思いますがみなさんいかがでしょう?