タグ

ブックマーク / www.revulo.com (1)

  • れぶろぐ - [PHP] PHP の switch 文は怖くて使えない

    PHPswitch 文は怖くて使えない PHP の == 演算子が地雷なのは知っていましたが、 まさか switch 文にも同じ問題があるとは思いませんでした。 これでピンと来ない人は、先に以下のページでも読んで下さい。 PHP が落とし穴だらけの言語であることが分かります。 素晴らしき自動的な世界〜或いは「型のない」世界〜 - がるの健忘録 さて、私が今回はまりそうになったのはこういうコードです。 function filter($value) { switch ($value) { case 'abc': case 'def': return $value; break; default: return ''; break; } } 要するに、入力値として abc と def だけ受け付けようという意図なんですが、 このコードにはバグがありまして、 php > echo fi

    pmint
    pmint 2012/07/14
    一貫して「緩い比較」を使えばいい話。厳密な比較も使うならswitchは使えないね。もしtaintな値を与えるのなら引数をそのまま返しちゃダメ。危ないのはそこ。引数をそのまま返す実装なので0が返ってきても驚かない。
  • 1