PHPのコロン構文について 「いきなり現れる謎のコロン」!?【初心者向け】

phpコロン構文トップ画像 IT

どうも皆さん!PHP勉強中の当ブログ管理者のアイクスです!

現在職業としてはプログラマーではなくなりましたが、ちょこちょこプログラミングも勉強してます。

プログラムが趣味という位置づけになっているので、さほどまだ勉強できていないのが実情なのですが・・・
最近仕事ではPHPのソース見ることが多いです。(書いてはないです)

そんな時、PHPのコードのいたるところに:(コロン)を発見!これは・・・なんだ・・!?

今まで経験してきたプログラミング言語のjava、javascript、Pythonなどではあまりこんな書き方を見たことないような・・・

ということで、調べてみると「コロン構文」というものが存在するようですね。
どのようなものなのか、調べてまとめてみました!

PHP初級者向け!PHPの「コロン構文」の概要が知りたい方へ!
記述の中で出てくる:(コロン)に関してサクッとまとめました!

PHPの「コロン構文」とは

コロン構文とはPHPのif、for、foreach、while、switchで使用することができる記述方法の1つです。

一般的に上記の分岐処理やループ処理のまとまりを明記するときには波括弧{} を使用します。

しかし、コロンを使用することによって、波括弧を使うことなく、処理のまとまりとして記述することができるみたいです。

具体的にはそれぞれ・・・

  • 開始の波括弧( { )をコロン( : )
  • 終了の波括弧( } )をセミコロン( ; )付きの書き方(endif; など)

にできます。

終了の波括弧の書き換えは以下のようになっています。

ifforforeachwhileswitch
endif;endfor;endforeach;endwhile;endswitch;

コロン構文の使用例

以下のような変数「input」判定するif文を例にした場合だと、

if ($input == 1) {
    echo '1だね!';
} else {
    echo '1ではない。ただの屍のようだ。';
}

↓こうなるってことですね!

if ($input == 1):
    echo '1だね!';
else:
    echo '1ではない。ただの屍のようだ。';
endif;

おいおい、ちょっと待ってくれ。

これは最悪(?)の場合 “}” が “endforeach;” になるということだから・・・

1文字( } )が11文字( endforeach; )に・・・
なんだって!?

10文字も増えてるじゃないか!!

と思ったそこのあなた。(筆者含む)

短くなるわけではなく長くなるとは、プログラマの敵!悪魔!

いやいや、本当にそうなのでしょうか。

それではどんなところで使われるのかみていきましょう。

コロン構文の利便性

基本的にHTML内でタグと合わせて記述する際に使用すると良さそうです。

ではどんな感じになるか見てみましょう。

以下のようなswitchでの判定があったとしましょう。

switch($input){
    case 1:
        print "1だね!";
        break;
    case 2:
        print "2だね!";
        break;
    case 3:
        print "3だね!";
        break;
    default:
        print "・・・想像以上だよ。";
}

これをHTMLに組み込むと・・・

<body>
  <h2>コロン構文なし</h2>
  <?php switch($input) { ?>
    <p>
      <?php case 1:
        print "1だね!";
        break;
      case 2:
        print "2だね!";
        break;
      case 3:
        print "3だね!";
        break;
      default:
        print "・・・想像以上だよ。"; ?>
    </p>
  <?php } ?>
</body>

↑こんな感じになるかと。

上記の例の場合だと、最後の波括弧(})の部分が孤立してしまっているので、ちょっと分かりづらいですね。

次に同じ処理をコロン構文で書いてみた例がこちらです。

<body>
  <h2>コロン構文</h2>
  <?php switch($input): ?>
    <p>
      <?php case 1:
        print "1だね!";
        break;
      case 2:
        print "2だね!";
        break;
      case 3:
        print "3だね!";
        break;
      default:
        print "・・・想像以上だよ。"; ?>
    </p>
  <?php endswitch; ?>
</body>

ほーう、なるほど。記述は長くなってしまいますが、処理の終了に「endswitch;」と明記されるので可読性は上がりますね。

PHPのコロン構文のポイント

タグと一緒に使う場合は各処理の終了が明記されることで、かなり分かりやすい!

今のところの自分の認識としてはこんな感じです。HTML内でタグと組み合わせて記述することができるPHPならではの構文って感じもしますね。(javaでいうJSP的な?)

そもそもPHPで普通にHTML内にかけるからなんかそこが最初は驚きでした。

最初はテンプレートエンジンという概念がないの!?どういうことなの!?と混乱気味に。
しかも、ここ一年ほどはSEとしてシステム導入(しかもWEBシステムではない)をしていたので、そもそもプログラミングからも離れていた技術力の低い僕の頭はもう崩壊寸前です。

一目見て処理終了がわかって便利なのでコロン使っていきたいと思います!!

コメント