PHP7.4にバージョンアップされましたので、新機能をまとめて
紹介します。
■新機能
1)型付きプロパティ
<?php
class User {
public int $id;
public string $name;
}
?>
2)アロー関数
暗黙的な値スコープを持った関数を定義する簡便な文法を提供します。
<?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
?>
3)返り値の型を狭めたり、引数の型を広げたりする
<?php
class A {}
class B extends A {}
class Producer {
public function method(): A {}
}
class ChildProducer extends Producer {
public function method(): B {}
}
?>
4)Null 合体代入演算子 「??」
<?php
$array['key'] ??= computeDefault();
// 上記は、以下にほぼ等しい
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
?>
5)配列内での値のアンパック
<?php
$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
// ['banana', 'orange', 'apple', 'pear', 'watermelon'];
?>
6)数値リテラルのセパレータ
数値リテラルは、桁と桁の間にアンダースコアを挿入できるようになりました。
<?php
6.674_083e-11; // float
299_792_458; // decimal
0xCAFE_F00D; // hexadecimal
0b0101_1111; // binary
?>
7)弱参照
弱い参照により、オブジェクトが破棄されるのを防がないオブジェクトへの参照を保持することが可能です。
8)__toString() から例外をスロー可能に
__toString() から例外をスローできるようになりました。以前は、この場合には致命的なエラーが発生していました。この関数内に既に存在する、回復可能な致命的なエラーは Error 例外クラスに変換されます。
9)CURL
CURLFile は、CURL拡張機能が libcurl 7.56.0 より新しいものでビルドされた場合は、通常のファイル名に加えて、ストリームラッパーをサポートするようになります。
10)Filter
FILTER_VALIDATE_FLOAT フィルタは min_range と max_range オプションをサポートするようになりました。 これは、FILTER_VALIDATE_INT と同じセマンティクスです。
11)FFI
FFI は、ネイティブ関数を呼び出したり、ネイティブな値にアクセスしたり、Cライブラリで定義されたデータ構造を生成/アクセスする簡単な方法を提供する新しい拡張機能です。
12)GD
画像に scatter フィルタを適用するための IMG_FILTER_SCATTER が追加されました。
13)Hash
Castagnoli 多項式を使った crc32c ハッシュが追加されました。 CRC32 バリアントは、 iSCSI, SCTP, Btrfs, ext4 のようなストレージシステムで使われています。
14)マルチバイト文字列
str_split() と同等の機能を提供するものの、バイトではなく、コードポイント単位で動作する mb_str_split() 関数が追加されました。
15)OPcache
コードを事前ロードする機能 がサポートされました。
その他は、正規表現 (Perl互換)、PDO、PDO_OCI、PDO_SQLite、SQLite3などがあります。
コメント
コメントを投稿