はじめに
コーディングアンチパターンの紹介(個人的に嫌いな書き方の紹介)
例1
<?php
if(true === true){
echo('条件式はtrueでした');
} else {
echo('条件式はfalseでした');
}
例えば上記のコードの出力結果は何になるでしょうか?
当然「条件式はtrueでした」と出力されます。
こんな条件式を書く人は恐らくいないとは思います。
では次の例はどうでしょうか
例2
<?php
$a = 'hoge';
if(isset($a) === true){
echo('条件式はtrueでした');
} else {
echo('条件式はfalseでした');
}
これも「条件式はtrueでした」と出力されます。
この条件式は見たことある人が結構いるのではないでしょうか?
ハッキリ言いますが僕はこの書き方が大嫌いです。
こういう条件式を書いている人は今すぐやめて以下のようにしてください。
<?php
$a = 'hoge';
if(isset($a)){
echo('条件式はtrueでした');
} else {
echo('条件式はfalseでした');
}
解説
http://php.net/manual/ja/function.isset.php
isset
のリファレンスを見てみましょう。
返り値はboolで定義されています。
つまりbool値true/falseしか返ってこないのです。
bool値が返ってくるのが分かっているのにわざわざ=== true
で比較するのは冗長以外のなにものでもありません。
isset
だけに限った話ではありません。
empty
とかis_array
, is_null
なども同様ですね。
isset($a) === true
と書くのはtrue === true
と書いてるのと同義です。
今すぐやめましょう。
おまけ
ただし必ずboolが返ってくるわけではないものに関しては=== true
の記述をした方が良い場合もあります。
例えばstrpos
http://php.net/manual/ja/function.strpos.php
返り値の欄に注意書きがあるようにfalseを返す時もあるしそれ以外を返す時もあるので===
演算子で判定しなければなりません。
返り値が必ずboolであるかどうか、で判断してください。