その他の変更
PHP コア
クロージャ
クロージャの名前が調整され、親関数の名前と 定義の行番号を含むようになりました。これにより、 スタックトレース内などでの識別が容易になります。
ファイバー(Fibers)
デストラクタ実行中にファイバーを切り替えられるようになりました。 以前はガベージコレクションとの競合のためブロックされていました。
デストラクタは別のファイバー内で実行される場合があります。
ガベージコレクションがファイバー内でトリガーされると、 GC によって呼び出されるデストラクタは 別のファイバー(gc_destructor_fiber)内で実行されます。 このファイバーが中断された場合、残りのデストラクタを実行するために 新しいファイバーが作成されます。 以前の gc_destructor_fiber は GC によって参照されなくなり、 他に参照されていなければ回収される可能性があります。 デストラクタが中断されたオブジェクトは、 デストラクタが戻るか Fiber が回収されるまで回収されません。
出力ハンドラ
ob_start() の flags
パラメータに渡された
出力ハンドラのステータスフラグがクリアされるようになりました。
output_add_rewrite_var() は、
リライトされるホストを選択するために
url_rewriter.hosts
を使用するようになりました。
以前は
session.trans_sid_hosts
を使用していました。
SAPI モジュールへの変更
apache2handler
EOLを迎えた Apache 2.0 および 2.2 のサポートが削除されました。 最小必要 Apache バージョンは 2.4 になりました。
CLI
組み込みサーバーは、指定されたファイルが見つからない場合、 親ディレクトリをたどってインデックスファイルを再帰的に探します。 このプロセスは、パスがファイルを指しているように見える場合 (最後のパスコンポーネントにピリオドが含まれる場合)はスキップされていました。 その場合、404 エラーが返されていました。 この動作は、すべての場合にインデックスファイルを探すように変更されました。
FPM
本文なしでヘッダをフラッシュできるようになりました。
ステータスページにメモリの最大使用量を表示するフィールドが追加されました。
Solaris/Illumos 用の /dev/poll events.mechanism
設定は廃止されました。
変更された関数
PHP コア
trigger_error() および user_error() は、戻り値の型が bool ではなく true になりました。
DOM
DOMDocument::registerNodeClass()
は、戻り値の型が bool ではなく true になりました。
実際には常に true
を返すことしかできませんでした。
Hash
hash_update()
は、戻り値の型が bool ではなく true になりました。
実際には常に true
を返すことしかできませんでした。
Intl
NumberFormatter::ROUND_TOWARD_ZERO
および
NumberFormatter::ROUND_AWAY_FROM_ZERO
が、新しい PHP_ROUND_*
モードと一致するように、
NumberFormatter::ROUND_DOWN
および
NumberFormatter::ROUND_UP
のエイリアスとして追加されました。
ResourceBundle::get()
は、戻り値の型が ResourceBundle|array|string|int|null
になりました。
idn_to_ascii() および idn_to_utf8()
関数は、domain
名が空または長すぎる場合、
ValueError をスローするようになりました。
idn_to_ascii() および idn_to_utf8()
関数は、variant
パラメータが
INTL_IDNA_VARIANT_UTS46
でない場合、
ValueError をスローするようになりました。
LibXML
libxml_set_streams_context() は、 非ストリームコンテキストリソースが関数に渡された場合、 ストリームコンテキストが使用されるときではなく、 直ちに TypeError をスローするようになりました。
MBString
mb_strcut() の動作は、 無効な UTF-8 および UTF-16 文字列に対してより一貫性のあるものになりました。 有効な UTF-8 および UTF-16 文字列に対する動作の変更はありません。
ODBC
odbc_fetch_object()、
odbc_fetch_array()、および
odbc_fetch_into() の
row
は、デフォルト値が null
になり、
odbc_fetch_row() と一致するようになりました。
以前は、それぞれデフォルト値が
-1
、
-1
、
0
でした。
OpenSSL
openssl_csr_new() の
extra_attributes
は、
CSR 属性を設定します。
以前はサブジェクト DN が誤って設定されていました。
openssl_csr_new() の
dn
は、
単一のエントリに対して値の array を設定できるようになりました。
openssl_csr_sign() に新たに
serial_hex
が追加され、
16 進形式でシリアル番号を設定できるようになりました。
openssl_x509_parse() で ASN.1 UTCTime を解析する際、
OpenSSL バージョン 3.2 未満では秒が省略されていると失敗します
(そのようなフィールドでは -1
が返されます)。
OpenSSL バージョン 3.3 以降では、そのような証明書は読み込むことができません。
PDO
PDO::getAttribute() で
PDO::ATTR_STRINGIFY_FETCHES
属性の値を取得できるようになりました。
PDO::PGSQL_ATTR_RESULT_MEMORY_SIZE
が追加されました。
サポートされているドライバで PDO::getAttribute() を使用して
クエリ結果のメモリ使用量を取得できるようになりました。
PDO_FIREBIRD
PDO::getAttribute() で
FB_ATTR_DATE_FORMAT
、
FB_ATTR_TIME_FORMAT
、
FB_ATTR_TIMESTAMP_FORMAT
属性の値を取得できるようになりました。
トランザクションの分離レベルとアクセスモードを指定するための新しい属性が追加されました。 この機能のため 5 つの定数が追加されました:
Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL
Pdo\Firebird::READ_COMMITTED
Pdo\Firebird::REPEATABLE_READ
Pdo\Firebird::SERIALIZABLE
Pdo\Firebird::WRITABLE_TRANSACTION
永続的な接続を使用する場合、コンストラクタ内での生存チェックが追加されました。
ビルドされる内容は、
ibase.h 内の
FB_API_VER
の値によって変わります。
この情報を取得するために新しい静的メソッド Pdo\Firebird::getApiVersion()
が追加されました。
この情報は phpinfo() からも参照できます。
5 つの新しいデータ型が利用可能になりました:
INT128
, DEC16
, DEC34
, TIMESTAMP_TZ
, TIME_TZ
これらは Firebird 4.0 以降で利用可能です。
PDO_MYSQL
PDO::getAttribute() で
PDO::ATTR_FETCH_TABLE_NAMES
属性の
値を取得できるようになりました。
PDO_PGSQL
PDO::PGSQL_ATTR_RESULT_MEMORY_SIZE
によるクエリのメモリ使用量の取得をサポートしました。
カラムが FLOAT4OID
または
FLOAT8OID
型の場合、値は
string ではなく float として返されるようになりました。
PGSQL
pg_select() の conditions
パラメータ
はオプションになり、空の配列を受け入れるようになりました。
Phar
Phar::setAlias(), Phar::setDefaultStub() は、戻り値の型が bool ではなく true になりました。
POSIX
posix_isatty() は、 ファイル記述子/ストリーム引数が無効な場合エラー番号を設定するようになりました。
Reflection
ReflectionGenerator::getFunction() は、ジェネレータの実行が終了した後でも呼び出すことができるようになりました。
Sockets
socket_create_listen() の
backlog
パラメータのデフォルト値は
SOMAXCONN
になりました。
以前は 128
でした。
Sodium
sodium_crypto_aead_aes256gcm_()* 関数は、ARM 暗号化拡張を持つ aarch64 CPU で 利用可能になりました。
SPL
SplPriorityQueue::insert(), SplPriorityQueue::recoverFromCorruption(), SplHeap::insert(), SplHeap::recoverFromCorruption() メソッドは、戻り値の型が bool ではなく true になりました。
SplObjectStorage は SeekableIterator を実装するようになりました。
Standard
password_hash() で指定できる
PASSWORD_BCRYPT
ハッシュアルゴリズムの
デフォルトの 'cost'
値が
10
から 12
に引き上げられました。
debug_zval_dump() は、配列がパックされているかどうかを示すようになりました。
long2ip() は、戻り値の型が string|false
ではなく
string になりました。
highlight_string() は、戻り値の型が
string|bool
ではなくstring|true になりました。
print_r() は、戻り値の型が
string|bool
ではなく string|true になりました。