[PHP] 構文省略形の書き方 タグとif文

PHP

省略タグ

閉じタグは書かない

「省略できる」ではなく、省略するべきで、公式でも省略が推奨されている。
Zend Frameworkなど一部PHPフレームワークでは規約として「記述してはいけない」となっている。
HTMLに埋め込むなどのときは、もちろん閉じタグが必要。

理由:閉じタグを記述すると、直後の空白や2行目以降の改行が認識(出力)され、バグの原因になるため。(改行は、閉じタグ直後の1つは認識されない)

echoの省略形

HTMLに埋め込むときなんかに便利。省略してもしなくても、速度に違いはないよう。
// いつもの
<?php echo $hoge; ?>
// 省略形
<?=$hoge?>

if文の書き方

コロン

HTMLに埋め込むときに便利。

if ($hoge === 'hoge') :
    echo 'HOGE';
else :
    echo 'hogehoge';
endif;
// WordPressとかでよく見るやつ。
<?php if ($hoge === 'hoge') : ?>
    <?=$hoge?>
<?php else : ?>
    <?='HOGEHOGE'?>
<?php endif; ?>

三項演算子

演算子の1つで、条件演算子とも呼ばれる。
基本構文 (条件式) ? (真式) : (偽式);
使い方

$str = ($hoge === 'hoge') ? 'HOGE' : 'hogehoge';
//または
$str = $hoge === 'hoge' ? 'HOGE' : 'hogehoge';
//または
$hoge === 'hoge' ? $str = 'HOGE' : $str = 'hogehoge';
echo $str

条件式の()は省略可。

1行で括弧の省略

条件式の後の命令が1つである場合、波括弧{}の書略が可能。
命令が2つ以上になる場合は、括弧の省略はできない。

if ($hoge === 'hoge')
    echo 'HOGE';
else
    echo 'hogehoge';
こう書いてあるの見たことあるけど、括弧省略は絶対やめてほしい。すごく見にくいし、修正が大変。
Appleでもこの書き方が原因のバグが見つかった。個人的に年配者が使ってるイメージがある。

Posted by Agopeanuts