PHP5.6 で作ったプログラムが PHP5.3 で動かなくてハマったこと
PHP5.6 で作ったプログラムを PHP5.3 の環境に移して、
正常に動作するかをテストしたら、以下の部分でダメだったw
PHP5.6 で OK だったが、PHP5.3 で NG だった部分
empty の判定
分かってたはずなのに、やってしまった。
if( !empty( hoge_func() ) ) {
って、関数に empty で判断させたら、PHP5.6 では動作したが、
PHP5.3 では、
Can’t use function return value in write context
とエラーが出力された。
$aho = hoge_func();
if( !empty( $aho ) ) {
に変えたら、動作した。
とどのつまり、PHP5.3 だと empty は変数にしか使えないけど、
PHP5.6 だと 関数にも使える。
null の判定
変数のデフォルト値に null を入れて、別の関数に渡したら、
PHP5.6 では、ちゃんと null だったのに、
PHP5.3 では、なぜか '' が渡ってきた。。。
if( $hoge !== null ) {
を
if( $hoge !== null && $hoge !== '' ) {
にしたら正常動作した。
謎い。意味不明。。。
ディスカッション
コメント一覧
まだ、コメントがありません