PHP開発チームがPHP 5.6のリリースを発表した 。 新リリースは新機能と多数の改善に加えて,開発チームによると,下位互換性のない変更がいくつか含まれている。
今回のリリースで最も重要な変更点は以下のものだ。
-
定数スカラ式
定数宣言,関数のデフォルト引数,およびクラスのプロパティで,基本的な算術演算や論理演算子が使用できるようになった。
const ONE = 1; const TWO = ONE * 2; class C { const THREE = TWO + 1; const ONE_THIRD = ONE / self::THREE; const SENTENCE = 'The value of THREE is '.self::THREE; public function f($a = ONE + self::THREE) { return $a; } }
-
可変引数の構文の改善
可変引数の関数が,新しいオペレータ"
...
"を使用して宣言できるようになった。public function variadic_function($param, ...$paramsArray) { // method implementation }
上の構文の "
...$paramsArray
"は,配列$paramsArray
にすべての可変引数を格納して,その後のメソッド実装でそのまま使用できるように,インタプリタに指示するものだ。これまでの可変引数は,次のような呼び出しを行って配列にバンドルする必要があった。$paramsArray = array_slice(func_get_args(), 1)
-
累乗法
新たな"
**
”演算子で累乗演算が可能になった。 -
UTF-8
デフォルトの文字エンコーディングがUTF-8に設定された。
-
GMP演算子のオーバーロード
GMPオブジェクトの演算子オーバーロードとスカラ型へのキャスト演算子が新たにサポートされた。これによって,GMPを使用するコードの表現力が向上する。
$a = gmp_init(42); $b = gmp_init(17); // 5.6以前のコード var_dump(gmp_add($a, $b)); var_dump(gmp_add($a, 17)); var_dump(gmp_add(42, $b)); // 新しいコード var_dump($a + $b); var_dump($a + 17); var_dump(42 + $b);
- 大容量ファイルのアップロード
これまでの2GBというファイルのアップロード制限が廃止されて,任意のサイズのアップロードがサポートされるようになった。
PHP 5.5からアップグレードするユーザ用には,5.5と5.6.0の変更を詳細に説明するとともに,多数の新機能の簡単なデモでそれらを補完したマイグレーションガイドが用意されている。
PHP 5.6.0では,互換性に影響する変更も導入されている。
-
配列リテラルを使用してクラスのプロパティとして配列を定義する場合,配列のキーが上書きされないようになった。
-
json_decode()の構文解析がこれまでより厳密になった。
-
SSL / TLSを使用する場合,ストリームラッパがデフォルトでピア証明書とホスト名を確認するようになった。
-
GMPリソースがオブジェクトになった。
-
Mcrypt関数に有効なキーとIVが必要になった。
すべての変更点の完全なリストは,ChangeLogに追記されている。