備忘録

【PHP】「変数が未定義なら初期化」を簡潔に書く(isset,emptyを使わずに)

コード

if(!$foo = 'bar');

これだけでNotice: Undefined variableを出さずに「変数が未定義なら初期化」が可能です。

if (!isset($foo)) {
    $foo = 'bar';
}
if (empty($foo)) {
    $foo = 'bar';
}

これらよりも簡潔に書けますね。

安易な利用は待って!

簡潔に書けますと紹介しましたが、安易な利用は踏みとどまりましょう。

そもそも、最初にこのコードを見て、一発で挙動を想像できましたか?

しかもif文の中で代入の演算子(=)を使用しています。

比較の演算子(==)のtypoではありませんよ。

  • issetやemptyを使った方が、明らかに可読性が高いです。
  • 変数が定義されているか否か不明な状態でその行に到達しないよう、リファクタリングすべきかもしれません。