PHP Australia Conference 2015

新機能

ジェネレータの追加

ジェネレータが追加されました。 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(192) 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() のドキュメントを参照ください。

foreachlist() に対応

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

<?php
$array 
= [
    [
12],
    [
34],
];

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 リテラルのデリファレンス

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

<?php
echo 'Array dereferencing: ';
echo [
123][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 拡張モジュールに、さまざまな改良が加えられました。

add a note add a note

User Contributed Notes 7 notes

up
75
emanwebdev at gmail dot com
9 months ago
Thank You for making empty() to support arbitrary expressions!
up
27
yannicschne at gmail dot com
5 months ago
The array and string dereferencing is awesome! Thanks for this.
up
14
ahmad dot samiei at gmail dot com
7 months ago
Thank you to make PHP even better than before.
up
9
Love this
8 months ago
Thanks for making "empty" easier to use and for the array dereferencing!!
up
10
PHP Guy
10 months ago
Great work.  Thank you for allowing Lists to return on foreach.
up
3
mykolas dot sirius at gmail dot com
5 months ago
Finally, array and string literal dereferencing is here, bless you all!
up
0
er dot ankitvishwakarma at gmail dot com
13 days ago
All the new features are incredible. I had always been waiting for such things to be happened.
To Top