PHPの制御構文の別(コロン)の書き方(endif, endforなど)

PHP

PHPでif文やfor文を書くときに、通常は波括弧({})を使って、下記のように制御構文を書くと思います。

<?php
if (true) {
    echo "trueです";
} else {
    echo "falseです";
}

for($i = 0;$i < 10;$i++) {
    echo "Hello$i";
}

波括弧を使わないで、コロンに置き換えて書く方法があるので、制御構文の別の書き方についてまとめてみました。

使いどころとしては、HTML内にPHPタグを書くときに使うのがいいかと思います。
波括弧で書くよりも、見やすいコードになる気がします。

実際に書いてみたので、見比べてみましょう。

別構文について、PHPの公式のドキュメントには、こちらに書いています。
PHP: 制御構造に関する別の構文 - Manual

コロン制御構文の書き方一覧

コロンを使う制御構文の書き方を一覧化してみました。

波括弧({)がなくなって、コロンになる感じですね。
終わりの閉じる波括弧(})もなくなって、それぞれendif;,endwhile;, endfor;,endforeach;, endswitch;のようになります。

if文

通常時は下記のように書きます。

if (true) {
    echo "trueです";
} else {
    echo "falseです";
}

別の書き方では、こうなります。

if (true):
    echo "trueです";
else:
    echo "falseです";
endif;

while文

通常時は下記のように書きます。

while (true) {
    echo "hello!!";
}

別の書き方では、こうなります。

while (true):
    echo "hello!!";
endwhile;

for文

通常時は下記のように書きます。

for ($i = 0;$i < 10;$i++) {
    echo "hello!!";
}

別の書き方では、こうなります。

for ($i = 0;$i < 10;$i++):
    echo "hello!!";
endfor;

foreach文

通常時は下記のように書きます。

$fruits = ['apple', 'orange', 'banana'];
foreach ($fruits as $fruit) {
    echo $fruit;
}

別の書き方では、こうなります。

$fruits = ['apple', 'orange', 'banana'];
foreach ($fruits as $fruit):
    echo $fruit;
endforeach;

switch文

通常時は下記のように書きます。

$fruit = 'apple';
switch ($fruit) {
    case 'apple':
        echo "りんご";
        break;
    default:
        echo "それ以外";
        break;
}

別の書き方では、こうなります。

$fruit = 'apple';
switch ($fruit) :
    case 'apple':
        echo "りんご";
        break;
    default:
        echo "それ以外";
        break;
endswitch;

HTMLの中で制御構文を書いてみた

HTMLの中で制御構文を使ってみました。

helloをbootstrap4のアラートで10回出しています。
2の倍数の場合はhello1が出力されて、それ以外の場合はhello2が出力されます。

通常の制御構文を使った場合は、このようになります。

<html>
    <head>
        <title>title hoge</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <?php for($i = 0; $i < 10; $i++) { ?>
            <div class="alert alert-primary" role="alert">
                <?php if($i % 2 == 0) { ?>
                    <span>hello1</span>
                <?php } else { ?>
                    <span>hello2</span>
                <?php } ?>
            </div>
            <?php } ?>
        </div>
    </body>
</html>

コロンを使って、書いた場合はこうなります。

<html>
    <head>
        <title>title hoge</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <?php for($i = 0; $i < 10; $i++) : ?>
            <div class="alert alert-primary" role="alert">
                <?php if($i % 2 == 0) : ?>
                    <span>hello1</span>
                <?php else: ?>
                    <span>hello2</span>
                <?php endif; ?>
            </div>
            <?php endfor; ?>
        </div>
    </body>
</html>

どうですか?

HTMLの中に書く場合はこのように書いたほうが見やすい感じがしませんか。
endif;endfor;などが入っているので終わりが分かりやすいですね。

終わりに

コロンの制御構文を書くことで、HTMLの中では見やすくなったかと思います。
基本的にPHPタグをHTMLの中に直接書くことはあまりないかもしれません。(LaravelのBladeやSPAでVueやReactを使うため)

書くことがある場合には、見やすくなるので使っていったら良いかと思いました。

コメント

タイトルとURLをコピーしました