2010年2月4日木曜日

PHP 妥当性チェックとかで楽がしたくて。。。

is_numeric & over zero

PHPではfalse null 0 '0'が==演算子だと同じなので、厳密にチェックしたい時は===を使いますが、数値の0と文字列の0は違うものとして扱われるので、データベースのint型で(特に1か0のフラグ系)、is_numeric関数と不等号で確認しますよね? それが何個もあるとif文が長くなるので、こういう関数を作っちゃいますw

is_numeric_over_zero(){
  foreach(func_get_args() as $v) { if(!is_numeric($v) || $v < 1){ return false; } }
  return true;
}
is_numeric_over_zero(1,2,3); # true
is_numeric_over_zero(0,1,2); # false

可変引数にしておくと便利で、ifの条件のところが長ったらしくなるのを防げます。もう少し短い名前の関数にした方がいいけどね!

return ( comparison );

三項演算を知ってるとそれ止まりというか、あまり見かけないのでやる人が少ないからあえて書いてみます。

//引数1が0以上であればtrue そうでない場合はfalseを返す関数の例
//三項演算の場合
function is_over_zero($numeric) { return ($numeric > 0) ? true : false; }
//こう書ける
function is_over_zero($numeric){ return ($numeric > 0); }
//郵便番号の例
function is_jp_zipcode($zipcode) { return (preg_match('/^\d{3}-\d{4}$/', $zipcode) > 0); }

比較演算子が返す値を知ってれば思いつくやり方です。僕はタイピングは遅い方じゃないと思いますが、なるべくコードを書かずして同等かそれ以上の成果を得られるよう心がけています。そしてコードが簡潔で意図を明確に表現するように頑張ってます><。Program Intently and Expressively(PIEの原則)とKeep It Simple, Stupid(KISSの原則)です。

0 件のコメント: