|
新機能
PHP コア
8進数の整数リテラルのプレフィックス指定
8進数の整数値の場合に、
数値リテラルのプレフィックスとして明示的に
0o や 0O
を指定できるようになりました。
これは、2進数や16進数の整数リテラルの表記と似ています。
文字列をキーとして持つ配列のアンパック
文字列をキーとして持つ 配列をアンパック できるようになりました。
引数を展開した後の名前付き引数
引数を ... で展開した後に、名前付き引数を指定できるようになりました。
e.g.
foo(...$args, named: $arg).
ファイルアップロード時の full-path キーのサポート
ファイルアップロード時に、
追加で
full_path キーを指定できるようになりました。
これにより、アップロードされるファイルの
(basename ではなく)
フルパスを指定できます。
これは、
"webkitdirectory" 属性
と組み合わせて使うことを意図しています。
列挙型(Enum)
列挙型
のサポートが追加されました。
ファイバー(Fibers)
ファイバー
のサポートが追加されました。
第一級callableを生成する記法
myFunc(...) という記法 で、
callable から無名関数を生成できるようになりました。
これは、
Closure::fromCallable('myFunc') と同等です。
注意:
... は文法の一部であり、省略形ではありません。
Never 型
戻り値にのみ指定できる型として、
新しく never 型が追加されました。
これは、関数が exit するか、
例外をスローするか、終了しないことを示します。
初期化時の new 式の許可
new ClassName() 式が、引数のデフォルト値の初期化時、
static 変数の初期化時、グローバルな定数の初期化時、
およびアトリビュートの引数として許可されるようになりました。
オブジェクトが define に渡せるようにもなっています。
読み取り専用プロパティ
プロパティに対して、readonly が指定できるようになりました。
CURL
CURLOPT_DOH_URL オプションが追加されました。
libcurl >= 7.71.0 で、
証明書を blob 経由で扱うためのオプションが追加されました。
-
CURLOPT_ISSUERCERT_BLOB
-
CURLOPT_PROXY_ISSUERCERT
-
CURLOPT_PROXY_ISSUERCERT_BLOB
-
CURLOPT_PROXY_SSLCERT_BLOB
-
CURLOPT_PROXY_SSLKEY_BLOB
-
CURLOPT_SSLCERT_BLOB
-
CURLOPT_SSLKEY_BLOB
ファイルをファイル経由ではなく、
文字列で POST するために使える
CURLStringFile クラスが追加されました。
FPM
OpenMetrics status フォーマットが追加されました。
これは、Prometheus が FPM のメトリクスを取得する用途に使います。
pm.max_spawn_rate と呼ばれる、
動的なプロセスマネージャーのための、
新しいプールオプションが追加されました。
これを指定することで、
動的なプロセスマネージャーを選択した場合に、
高速にたくさんの子プロセスが起動できるようになります。
これのデフォルト値は 32 で、
以前からハードコーディングされていたものです。
GD
libgd に Avif のサポートが組み込まれている場合に、
imagecreatefromavif と
imageavif
で Avif が使えるようになりました。
Hash
hash,
hash_file,
hash_init 関数に、
オプションの引数 options が追加されました。
これによって、ハッシュアルゴリズム特有のデータを渡せるようになります。
MurmurHash3
ストリーミングをサポートした
MurmurHash3 のサポートが追加されました。
以下のバリアントが実装されています:
-
murmur3a, 32-bit hash
-
murmur3c, 128-bit hash for x86
-
murmur3f, 128-bit hash for x64
ハッシュの初期ステートを
引数 options の
seed キーを通じて渡すことができます。
たとえば、以下のように書くことができます:
有効な seed の値は
0 から
プラットフォーム定義の UINT_MAX までです。
この値は、通常は 4294967295 です。
xxHash
xxHash のサポートが追加されました。
以下のバリアントが実装されています:
-
xxh32, 32-bit hash
-
xxh64, 64-bit hash
-
xxh3, 64-bit hash
-
xxh128, 128-bit hash
ハッシュの初期ステートを
引数 options の
seed キーを通じて渡すことができます。
たとえば、以下のように書くことができます:
以下のようにして、シークレットを引数 options の
secret キーを通じて渡すこともできます:
カスタムのシークレットの品質が、
生成されるハッシュ値の品質に重大な影響を及ぼします。
できる限りエントロピーが高いシークレットを使うことを強く推奨します。
MySQLi
実行時に引数をバインド
mysqli_stmt::execute
に配列を指定することで、引数をバインドできるようになりました。
全ての値が、文字列としてバインドされます。
(連想配列でない) リストだけを指定できます。
この新機能は、MySQLi を libmysqlclient
を使ってコンパイルしている場合には利用できません。
新しいメソッド mysqli_result::fetch_column
mysqli_result::fetch_column
が追加されました。これによって、
結果セットから単一のスカラー値を取得することができるようになります。
この新しいメソッドは、
オプションの引数 column
に 0 から始まる整数値を指定することで、
どのカラムから情報を取得するかを指定できます。
PDO
PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY
属性が追加されました。
これによって、ファイルを読み込むことを許可するディレクトリを指定できます。
これは、
PDO::MYSQL_ATTR_LOCAL_INFILE
が無効の場合にだけ意味があります。
なぜなら、
この場合に全てのディレクトリからのファイルの読み込みが許可されるからです。
PDO_SQLite
SQLite の
"file:"
DSN 記法がサポートされるようになり、
追加のフラグも指定できるようになりました。
この機能は、open_basedir が設定されている場合は使えません。
POSIX
POSIX_RLIMIT_KQUEUES と
POSIX_RLIMIT_NPTS が追加されました。
これらの rlimits は、FreeBSD でのみ利用可能です。
標準ライブラリ
fputcsv は、
新しい引数 eol を受け入れるようになりました。
これによって、カスタムの改行文字を定義できるようになります。
デフォルトは以前と同じで、"\n" のままです。
Standard PHP Library(SPL)
SplFileObject::fputcsv は、
新しい引数 eol を受け入れるようになりました。
これによって、カスタムの改行文字を定義できるようになります。
デフォルトは以前と同じで、"\n" のままです。
|