- 名前空間(namespace)
- 静的遅延束縛(static)
http://php.net/manual/ja/language.oop5.late-static-bindings.php - クロージャ
- __callStatic()
- __invoke()
- goto
- json_last_error()
- array_replace()
- array_replace_recursive()
- lcfirst()
- parse_ini_string()
- str_getcsv()
- date_add()
- date_diff()
- date_sub()
- トレイト
http://php.net/manual/ja/language.oop5.traits.php - 配列の短縮構文
- 関数の返り値を配列として扱えるようになった
foo()[0] - クラスのインスタンスを生成するときに、そのメンバーにアクセスできるようになった
(new Foo)->bar() - staticメソッドの可変呼出し
Class::{expr}() - 関数呼出し時の引数の参照渡しで警告
- セーフモード削除
- マジッククォート削除
- hex2bin()
- session_status()
- session_register_shutdown()
- mysqli_error_list()
- mysqli_stmt_error_list()
- ジェネレータ(yield)
http://php.net/manual/ja/language.generators.overview.php - finally
- foreachがlist()に対応
foreach ($array as list($a, $b)) - json_last_error_msg()
- array_column()
- boolval()
- constの定数式
- 累乗演算子 **
- ...による可変長引数
http://php.net/manual/ja/functions.arguments.php#functions.variable-arg-list.new - ...によるアンパック
http://php.net/manual/ja/migration56.new-features.php#migration56.new-features.splat - use function
- use const
- 2GB超のファイルアップロード
- GMPでの演算子オーバーロード(+-*/)
- hash_equals()
http://php.net/manual/ja/function.hash-equals.php
- スカラー型宣言(string int float bool)
function sumOfInts(int ...$ints) - 戻り値の型宣言
function arraysSum(array ...$arrays): array - Null合体演算子(??)
$username = $_GET['user'] ?? 'nobody';
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody'; - 宇宙船演算子(<=>)
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1 - define()を用いた配列定数の定義
- 無名クラス
$this->setConfig(new class implements IConfig {
public function validate($data)
{
// some validation
}
}); - use宣言のグループ化
use some\namespace{ClassA, ClassB, ClassC as C}; - Generator::getReturn()
- intdiv()
- session_start()のオプション配列
http://php.net/manual/ja/function.session-start.php#refsect2-function.session-start-unknown-unknown-exampleu - Unicodeコードポイントエスケープ構文
Unicodeのコードポイントを十六進形式で受け取る
先頭のゼロは省略してもかまわない
echo "\u{aa}"; // a
echo "\u{0000aa}"; // a
echo "\u{9999}"; // 香 - IntlCharクラス
Unicode Character Databaseで配布されているデータを文字の種類の判定に使う - 可変アクセスの評価順の変更
$$foo['bar']['baz']を意図通りにするには${$foo['bar']['baz']}
$foo->$bar['baz']を意図通りにするには$foo->{$bar['baz']}
可変アクセスに配列を使う場合は{}で囲む
- nullable型
function testReturn(): ?string
function test(?string $name) - 返り値の型としてvoid
function swap(&$left, &$right): void - 代入用に配列の値を[]で取り出す
[$id1, $name1] = $data[0]
foreach ($data as [$id, $name]) - クラス定数のアクセス範囲指定(public const / protected const / private const)
- 例外処理における複数の例外のcatch
} catch (FirstException | SecondException $e) { - list()におけるキーのサポート
list("id" => $id1, "name" => $name1) = $data[0]; - 負の文字列オフセット
var_dump("abcdef"[-2]); // e