新機能
ジェネレータの追加
ジェネレータが追加されました。 yield キーワードで利用します。 ジェネレータを使えば、シンプルなイテレータを簡単に実装できます。 Iterator インターフェイスを実装したクラスを用意する オーバーヘッドや複雑さを心配する必要はありません。
range() 関数をジェネレータで実装しなおす例を示します
(step
には正の値しか使えません)。
<?phpfunction 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
新しいパスワードハッシュ 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() に渡せるようになりました。たとえば次のようになります。
<?phpfunction 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 をデリファレンスして、 個々の要素や文字に直接アクセスできるようになりました。
<?phpecho '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
クラスの完全修飾名を取得できるようになりました。
次の例を参照ください。
<?phpnamespace 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() 関数で、高度なクロップ処理に対応しました。