m6uのエンジニアっぽい日記

PHP利用開発やFuelPHP利用開発、PostgreSQL利用開発、Androidアプリ開発、CentOS7サーバー構築など、テクニカルでエンジニアっぽい内容の日記

PHP 7.2: count()の仕様変更に遭遇している

さくらのVPSを契約して、CentOS7環境を構築中です。

CentOS Linux release 7.4.1708 (Core)
PHP 7.2.1 (cli) (built: Jan 3 2018 08:53:04) ( NTS )
psql (PostgreSQL) 9.6.5

先日の、remi-php72リポジトリの件でようやくほぼほぼ最新安定リリース環境でのweb&db構築ができつつあり、既存システムの動作確認に着手できたのですが、早速PHPのバージョン変更による影響に遭遇したのでそのメモです。

Warning: count(): Parameter must be an array or an object that implements Countable とは

PHPのオンラインドキュメントで、countabe ではない型をカウントしたときの警告によると、

countable ではない型に対して count() (およびそのエイリアスである sizeof()) を使ったときに E_WARNING が発生するようになりました。

とのことです。例えばFuelPHPでこんなコードを書いていました:

if (count(Input::post('foo')) > 0) {
    ~
}

これは、POSTにて受信するパラメータが存在する場合にだけ処理を行いたいときに書いたものですが、そもそもこのfooパラメータを受信しないときには Input::post('foo') はNULLを返すため、countableではないことになり上記のWarningが発生していました。
なので、このWarningを回避するためにコードを変更しています:

if (!is_null(Input::post('foo'))) {
    if (count(Input::post('foo')) > 0) {
        ~
    }
}

もうちょっとスマートなやり方はないかなぁ。