下位互換性のない変更点
PHP 5.5.x で推奨されなくなる機能
PHP 5.4.x から PHP 5.5.x への移行
PHP Manual

## 新機能

### ジェネレータの追加

ジェネレータが追加されました。 yield キーワードで利用します。 ジェネレータを使えば、シンプルなイテレータを簡単に実装できます。 Iterator インターフェイスを実装したクラスを用意する オーバーヘッドや複雑さを心配する必要はありません。

range() 関数をジェネレータで実装しなおす例を示します (step には正の値しか使えません)。

`<?php
function xrange($start, $limit, $step = 1) {
for ($i = $start; $i <= $limit; $i += $step) {
yield $i;
}
}
echo 'Single digit odd numbers: ';
/*
* 配列を作ったり配列を返したりしていないことに注目しましょう。
* そのぶんメモリの節約になります。
*/
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
echo "\n";
?>`

上の例の出力は以下となります。

    Single digit odd numbers: 1 3 5 7 9

### finally キーワードの追加

try-catch ブロックで finally が使えるようになりました。例外が発生したかどうかに関わらず 必ず実行しないといけないコードをここに書きます。

### 新しいパスワードハッシュ API

新しいパスワードハッシュ API が用意され、より簡単にパスワードをハッシュしたり管理したりできるようになりました。 PHP の crypt() が使っているのと同じライブラリを利用します。 詳細は password_hash() のドキュメントを参照ください。

### foreach が list() に対応

foreach で list() を使って、 ネストした配列を個別の変数に展開できるようになりました。たとえば次のようになります。

`<?php
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)) {
echo "A: $a; B: $b\n";
}
?>`

上の例の出力は以下となります。

    A: 1; B: 2
    A: 3; B: 4

詳細な情報は foreach のマニュアルを参照ください。

### empty() が任意の式に対応

変数だけでなく、任意の式を empty() に渡せるようになりました。たとえば次のようになります。

`<?php
function always_false() {
return false;
}
if (empty(always_false())) {
echo "This will be printed.\n";
}
if (empty(true)) {
echo "This will not be printed.\n";
}
?>`

上の例の出力は以下となります。

    This will be printed.

### array リテラルと string リテラルのデリファレンス

Array と string をデリファレンスして、 個々の要素や文字に直接アクセスできるようになりました。

`<?php
echo 'Array dereferencing: ';
echo [1, 2, 3][0];
echo "\n";
echo 'String dereferencing: ';
echo 'PHP'[0];
echo "\n";
?>`

上の例の出力は以下となります。

    Array dereferencing: 1
    String dereferencing: P

### ::class によるクラス名の解決

ClassName::class で、 ClassName クラスの完全修飾名を取得できるようになりました。 次の例を参照ください。

`<?php
namespace Name\Space;
class ClassName {}
echo ClassName::class;
echo "\n";
?>`

上の例の出力は以下となります。

    Name\Space\ClassName

### OPcache 拡張モジュールの追加

Zend Optimiser+ のオペコードキャッシュ機能が、 OPcache 拡張モジュール としてPHP に追加されました。 OPcache は、PHP のパフォーマンスを向上させるために、 事前にコンパイル済みのスクリプトのバイトコードを共有メモリに格納します。 その結果、PHP がリクエストのたびにスクリプトの読み込みやパースをする必要がなくなります。 OPcache を有効にする方法や使いかたについては インストール のページを参照ください。

### foreach が非スカラーのキーに対応

foreach が、キーに任意の型を使えるようになりました。 非スカラーのキーは PHP ネイティブの配列では使えませんが、 Iterator::key() は任意の型の値を返せ、 これを適切に処理できるようになりました。

### Apache 2.4 ハンドラが Windows に対応

Apache 2.4 ハンドラ SAPI が Windows に対応するようになりました。

### GD の改良

GD 拡張モジュールに、さまざまな改良が加えられました。

- 新しい imageflip() 関数で、画像の反転に対応しました。
- imagecrop() 関数と imagecropauto() 関数で、高度なクロップ処理に対応しました。
- WebP の読み書きが、それぞれ imagecreatefromwebp() 関数と imagewebp() 関数でできるようになりました。

下位互換性のない変更点
PHP 5.5.x で推奨されなくなる機能
PHP 5.4.x から PHP 5.5.x への移行
PHP Manual