2017-02-09

tobijibu

phpでコロン(:)を使った制御文について

phpを使い始めたころ、html内に書かれた構文が理解できず頭を抱えました。どんな構文かというと、下のようなコロン(:)で指定された構文です。

<?php if ($isNeko === true): ?>
  <span>にゃー</span>
<?php else: ?>
  <span>わん</span>
<?php endif; ?>

このコロン構文(勝手に名付けました)はifwhileforforeachswitchで使えます。コロン構文を使う場合は、構文の}(閉じカッコ)は使えず、end○○;にしなければなりません。

今でこそ、見た瞬間に理解出来るのですが、初めて見た時は意味が分からず、「php if ":" コロン」なんて検索しました。

テンプレート内で直接制御文を書けて、読みやすいということもあり便利なのですが、テンプレート内で制御文を駆使するのはおすすめしません。出来る限りテンプレート内で制御文を書かないようにしたいものです。


ちなみに、コロン構文は毎度毎度<?php ~ ?>で囲う必要はありません。

よくphpの説明サイト等ではテンプレート内の処理説明で記述されていることが多く、1行ごとに<?php ~ ?>で区切られているものが見受けられますが、phpの構文の一つなのでまとめて書くこともできます。

つまりphp本文中であれば、通常の制御文と同じように扱うことが出来ます。大変読みづらいですが下記のように書くこともできるわけです。

<?php
if ($isNeko === true):
    print 'にゃー';
else:
    print 'わん';
endif;

昔、私は三項演算子が苦手だったのですが、この構文を理解したことで三項演算子も難なく読めるようになりました。何となく似てませんか?

参考サイト

php.net - 制御構造に関する別の構文
http://php.net/manual/ja/control-structures.alternative-syntax.php