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 ";
}
?>

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

Single digit odd numbers: 1 3 5 7 9 

finally キーワードの追加

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

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.';
}

if (empty(
true)) {
    echo 
'This will not be printed.';
}
?>

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

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

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

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

Apache 2.4 ハンドラが Windows に対応

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


PHP 5.4.x から PHP 5.5.x への移行
PHP Manual