PHPのお勉強!

PHP TOP

その他の変更

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-10 でした。

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_FORMATFB_ATTR_TIME_FORMATFB_ATTR_TIMESTAMP_FORMAT 属性の値を取得できるようになりました。

トランザクションの分離レベルとアクセスモードを指定するための新しい属性が追加されました。 この機能のため 5 つの定数が追加されました:

永続的な接続を使用する場合、コンストラクタ内での生存チェックが追加されました。

ビルドされる内容は、 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 になりました。

SplObjectStorageSeekableIterator を実装するようになりました。

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 になりました。

round() による丸め処理

round() 関数の mode パラメータは、