PHPには不可思議な動作をするケースが多々ある。その仕様について嫌になるか、柔軟性があると感じるかで好き嫌いが分かれるような気がする。特に不可解なのが、文字列の比較だ。文字列と数字を比較したり、空文字がfalseになったりするのはとても危険な気がしてしまう。

ピクチャ 27.png

RubyでもPHP的比較を

 

だがPHPからRubyに移った人にすれば、この仕様が好きな場合もあるかも知れない。そんな時に使えるのがruby-phpだ。

今回紹介するフリーウェアはruby-php、Ruby用のPHP風比較処理を可能にするライブラリだ。ソースコードは公開されているが、ライセンスは明記されていなかったのでご注意いただきたい。

ruby-phpを読み込むと、“99” == 99でtrueが返るようになる。また、"" == falseもtrueが返る。Webフォームやクエリーのパラメータで文字列が送られてきても、問題なく(?)比較できるようになる。

ピクチャ 28.png

色々と不可解なマッチングをする

 

文字列と数字の比較では、文字列の前後にスペースが入っていても比較してくれる柔軟さを持ち合わせる。が、文字列同士の比較ではスペースが入っていると駄目らしい。何とも不可解な仕様だ。さらに"0"はfalseと等価と判断される。

PHPの比較では===やstrcmpを使うのが当たり前になっていると思うが、==も場合によっては便利に使えるだろう。自動的な型変換を備えた比較をRubyでも、と思う方はruby-phpを試してみよう。

 

星一の日記

 http://d.hatena.ne.jp/hajimehoshi/

hajimehoshi’s ruby-php at master - GitHub

 http://github.com/hajimehoshi/ruby-php/tree/master