ジェネレータが追加されました。 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
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() に渡せるようになりました。たとえば次のようになります。
<?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 をデリファレンスして、 個々の要素や文字に直接アクセスできるようになりました。
<?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 が用意され、より簡単にパスワードをハッシュしたり管理したりできるようになりました。 PHP の crypt() が使っているのと同じライブラリを利用します。 詳細は password_hash() のドキュメントを参照ください。
Apache 2.4 ハンドラ SAPI が Windows に対応するようになりました。