PHP 5.6 で変わったこと

(1/1)
PHP 5.6は、2014年(平成26年)8月28日に正式版がリリースされた。PHPデバッガー「phpdbg」が同梱されたことが大きなポイントだ。
内部的には、POSTデータサイズが無制限になったことや、定数スカラ式や累乗演算子が加わるなど、地味だが便利な改良が行われている。

PHP 5.6のセキュリティサポート期限は2018年(平成30年)12月31日で、すでにサポート終了している。
 本ページは、すでにサポートを終了したソフトウェアに関して記載しています。ご利用にあたっては自己責任でお願いします。

可変引数の改善

パラメーター数が可変である関数・メソッドであることをシグニチャに明記できるようになるvariadicが追加される。
C言語では可変引数を "..." と標記するが、これに似ている。

0003: function hoge1($reqParam$optParam = null, ...$params) {
0004:     var_dump($reqParam$optParam$params);
0005: }
0006:  
0007: hoge1(1);             // 1, null, []
0008: hoge1(1, 2);          // 1, 2, []
0009: hoge1(1, 2, 3);       // 1, 2, [3]
0010: hoge1(1, 2, 3, 4);    // 1, 2, [3, 4]
0011: hoge1(1, 2, 3, 4, 5); // 1, 2, [3, 4, 5]

POSTデータサイズが無制限

デフォルトで、POSTデータがメモリに保存されなくなった。さらに、64ビット化されたことにより、事実上POSTデータのサイズが無制限になった。大きなデータの授受をするときに便利だ。

任意精度演算

PHPの演算誤差」で紹介したように、GMP/BC Mathなど任意精度の演算をサポートするモジュールを使う場合、算術演算子(+ – / * など)と比較演算子(< > <= >= など)が利用できなかった。
PHP5.6では、GMPで生成した任意精度の変数はオブジェクトとして扱われ、オペレーターオーバーローディングで普通の数値と同じように扱えるようになる。

0014: $a = gmp_init(42);
0015: $b = gmp_init(17);
0016: 
0017: var_dump($a + $b);
0018: var_dump($a + 17);
0019: var_dump(42 + $b);
0020: 
0021: // Outputs the following 3 times:
0022: object(GMP)#%d (1) {
0023:     ["num"]=>
0024:     string(2) "59"
0025: }

累乗演算子

累乗演算子 "**" が用意される。

定数スカラ式

定数宣言、関数のデフォルト引数、およびクラスのプロパティで、基本的な算術演算や論理演算子が使用できるようになる。

0028: const ONE = 1;
0029: const TWO = ONE * 2;
0030: 
0031: function hoge2($a = ONE + self::THREE) {
0032:     return $a;
0033: }

PHPデバッガ

PHPデバッガー「phpdbg」が同梱される。

phpdbgでは、PHPのみで簡単にサーバー側アプリのテストが可能になる。$_GET, $_POST, $_COOKIEなどの変数を設定するだけで、PHPアプリの動作をテストできる。

推奨されなくなる機能

PHP 5.6 で推奨されなくなる機能
非推奨機能 代替方法
非互換のコンテキストからの呼び出し 将来的に削除予定。
$HTTP_RAW_POST_DATA および always_populate_raw_post_data php://input を使う。
iconv および mbstring のエンコーディング設定 default_charset を使う。

参考サイト

(この項おわり)
header