PHP:empty()のワナ
2015-07-15
某所のコードを自分の環境に持ってきて動かしてみたのだが、なんか Smarty のテンプレート内で摩訶不思議なエラーが出る。。。
どう見てもおかしくないように見えるのだが、こんな記述がパースエラーになる模様。
{if !empty($data.banner_url)}
しかし、よくよく調べてみると、、、、
PHP 5.5 より前のバージョンでは、empty() がサポートするのは変数だけです。 それ以外の値をチェックするとパースエラーになります。 つまり、 empty(trim($name)) は動作しません。かわりに trim($name) == false を使います。
なんて記載があった。
たしかに、某所は PHP-5.5 で、自分の環境は 5.3。
こんなところで動きが変わるのね。。。
上記の記載の例だと完全に式だけど、今回のケースは別に式じゃないんだけどな、、、、とも思ったけど、Smarty の内部でどんな実装してるのかにもよるか。
ちなみに、、
{if !empty($data.banner_url|nodefaults)}
だと、PHP-5,3 でも期待通りの動作になりました。
empty() は便利なんだけど、紛らわしい動きするしクセがあるので使わない方がいいという気もしますな(^_^;