ジェネレータ構文
0002: try {
0003: doSomething1();
0004: } catch (Exception $e) {
0005: handleException($e);
0006: }
0007:
0008: //...
0009: try {
0010: doSomething2();
0011: doSomething3();
0012: } catch (Exception $e) {
0013: handleException($e);
0014: }
0015:
0016: //...
0017: try {
0018: doSomething3();
0019: doSomething4();
0020: } catch (Exception $e) {
0021: handleException($e);
0022: }
このようなコードは1箇所変更したら、あちらこちらを直さなければならない。

ジェネレーター構文を使うと次に書ける。
0002: function handleError(callable $func) {
0003: try {
0004: $func(); //関数を外から突っ込んで実行
0005: } catch (Exception $e) {
0006: handleException($e);
0007: }
0008: }
0009:
0010: handleError('doSomething');
0011: handleError(function(){
0012: doSomething2();
0013: doSomething3();
0014: });
0015: handleError(function(){
0016: doSomething3();
0017: doSomething4();
0018: });

ジェネレーター構文は、このような複雑なコードでも共通化が可能になる。
メモリの節約

たとえば、1万個の配列に対して何らかの処理を刷るプログラムを考えてみる。
0002: $array = range(1, 10000);
0003: foreach ($array as $val) {
0004: do_something($val);
0005: }
要素数が多くなる場合はジェネレータを用いた方がメモリ利用効率の点で有利になる。
オペコードキャッシュ
PHP 5.4ではAPCが使用されていたが、PHPコアと独立して開発されていたため実装の足並みが揃わないという問題があった。そこでPHP 5.5では、Opcache(Zend Optimizer+)が正式に組み込まれた。

ただし配布状態の php.ini ではOpcacheは有効に設定さあれていない。使用するには、php.iniに以下の記述が必要となる。
zend_extension=opcache.so
推奨されなくなる機能
非推奨機能 | 代替方法 |
---|---|
MySQL拡張機能 | MySQLiクラスもしくはPDO_MYSQLを使用する。 |
preg_replaceの /e 修飾子。 | preg_replace_callback を使用する。 |
mcrypt_cbc, mcrypt_cfb, mcrypt_ecb, mcrypt_ofb |
文法上の大きな変更点は、ジェネレータ構文を追加したことである。
内部では、処理性能を向上するオペコードキャッシュが標準搭載された。
Windows版では、Windows XPと2003がサポートされなくなった。
ここでは、PHP 5.4から5.5へ移行するためのポイントを整理する。
PHP 5.5のセキュリティサポート期限は2016年(平成28年)7月10日であり、サポートは終了した。