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 !== '' ) {

にしたら正常動作した。

謎い。意味不明。。。

IT・ICT

Posted by るな