PHP 5.4がリリースされました。
詳細はソースに添付されているUPGRADINGとNEWS、マニュアルのマイグレーションガイドから参照できます。
注目の新機能
- Trait
- 配列の省略記法 $array = [1, 2, 3]; $array = [‘a’=>1, ‘b’=>2, ‘c’=>3];
- 配列を返す関数の添字へ直接アクセス foo()[0] などと利用可能
- オブジェクト生成時のメンバーアクセス (new foo)->method(), (new foo)->property
- タイプヒントにcallableが追加 function(callable $func)などと利用可能
- CLI Server
個人的にはCLI Serverは非常に便利だと思います。PHPのWebアプリを少し試したい、といった場合にWebサーバを別途に用意しなくてもPHPだけで試す事ができます。しかもかなり高性能です。CLIのインタラクティブモード(php -a)にページャが指定できるようにもなりました。地味ですが便利な機能だと思います。
注目の仕様変更
- ショートオープンタグ”<?”が常に利用可能
default_charsetはUTF-8がデフォルトhtmlentities/htmlspecialcharsのデフォルトがUTF-8に変更- 文字列の取り扱いに整合性($str[0][0], str(‘abc’, ‘xyz),などの動作が変わる)
- htmlentitiesの動作が厳格に(いろいろ変わっています。UPGRADINGを参照)
- ZendマルチバイトサーポートがコンパイルオプションからINIオプションへ(zend.multibyte)
- スクリプトエンコーディング(zend.script_encoding、declare(encoding=”encname”))
- レガシー機能(マジッククオート、Zendエンジン1互換性、古いセッションモジュールとの互換性、セーフモードなど)の削除
- E_ALLにE_STRICTが追加
- ext/sqliteがPECLへ(SQLite3はそのまま)
- $_SERVER[‘REQUEST_TIME_FLOAT’]が追加
このブログでも紹介しましたが、文字エンコーディングの取り扱いが変わっています。
関数や式の戻り値が変ってしまう場合もあるので以前のPHPからのアップグレードには注意が必要です。
PHP5.4の性能
便利そうな機能が増えると性能も気になります。PHP5.4の性能は全般的に以前のPHPより向上しています。PHPのCIシステムのベンチマークでは全般的な性能向上が分かります。
http://windows.php.net/downloads/snaps/ostc/pftt/perf/results-20120203-5.3.10-5.4.0RC7.html
アプリケーションレベルではバイトコードキャッシュが無い状態で1割程度の性能向上も期待できそうです。
まとめ
ロードマップによるとPHP 5.4のリリース後1年でPHP 5.3はEOL、その一年後にはセキュリティパッチのリリースも停止される予定です。慌ててマイグレーションの準備をする必要はありませんが、計画的にマイグレーションをすすめる必要があります。 PHP 5.4対応はこれからですが、このような用途にPROVE for PHPは適しています。
多くのスクリプト、アプリケーションはそのまま動作すると思います。しかし、マイナーバージョンアップなので思わぬ所で問題が発生しないように注意してください。
追記
NEWSファイルの記述が誤っており、default_charsetでなくhtmlentities/htmlspecialcharsのデフォルト文字エンコーディングが変更されている。リポジトリのNEWSファイルは修正されている。