その他の変更
SAPI モジュールの変更
Apache2Handler
PHP モジュールの名前が php7_module
から
php_module
に変更されました。
変更された関数
リフレクション
ReflectionClass::getConstants() と
ReflectionClass::getReflectionConstants() の結果は
新しい引数 filter
を経由してフィルタされるように変更されました。
この用途のために、以下の3つの新しい定数が追加されています:
ReflectionClassConstant::IS_PUBLIC
ReflectionClassConstant::IS_PROTECTED
ReflectionClassConstant::IS_PRIVATE
Zip
- ZipArchive::addGlob() と ZipArchive::addPattern() メソッドは 配列
options
の値に、以下の値を追加で受け入れるようになりました:flags
comp_method
comp_flags
env_method
enc_password
- ZipArchive::addEmptyDir(), ZipArchive::addFile(), ZipArchive::addFromString() に新しい引数
flags
が追加されました。 これによって、名前のエンコーディング (ZipArchive::FL_ENC_*
) とエントリの置換 (ZipArchive::FL_OVERWRITE
) が管理できるようになります。 - ZipArchive::extractTo() メソッドは、ファイルの変更時間も復元するようになりました。
拡張機能に対するその他の変更
Enchant
enchant 拡張機能は、利用可能な場合は、デフォルトで libenchant-2 を使うようになりました。 libenchant バージョン1 もまだサポートしていますが、推奨されませんし、将来削除される可能性があります。
GD
- imagepolygon(), imageopenpolygon(), imagefilledpolygon() 関数の
num_points
引数はオプションになりました。 つまり、これらの関数は3つ、または4つの引数で呼び出すことが出来るということです。 この引数が省略された場合、この値はcount($points)/2
で計算されます。 - 現在の補間メソッドを取得するために、imagegetinterpolation() 関数が追加されました。
JSON
JSON 拡張機能は無効にできなくなりました。 date 拡張機能と同様に、PHP をビルドするために常に必須になっています。
マルチバイト文字列
Unicode データのテーブルが、バージョン 13.0.0 に更新されました。
LibXML
libxml の最低バージョンが 2.9.0 になりました。 これにより、外部エンティティの読み込みがデフォルトで無効であることが保証されるようになりました。 よって、XXE攻撃を防ぐために追加の手順を踏む必要はありません。
MySQLi / PDO MySQL
- mysqlnd を使わない (これはデフォルトであり、推奨されるオプションです) 場合、 サポートされる libmysqlclient の最低バージョンは 5.5 になりました。
- mysqli_result は、 (Traversable ではなく) IteratorAggregate を実装しました。
PGSQL / PDO PGSQL
PGSQL と PDO PGSQL 拡張機能は、libpq 9.1 以降が最低限必要になりました。
Readline
対話的なプロンプトが始まる前に (つまり、 auto_prepend_file を実行中に) readline_completion_function() を呼ぶと、 デフォルトの対話プロンプトの補完関数を上書きするようになりました。 PHP 8.0.0 より前のバージョンでは、 readline_completion_function() 関数は 対話的なプロンプトが始まった後に呼び出したときにだけ動作していました。
SimpleXML
SimpleXMLElement は、 RecursiveIterator を実装し、 SimpleXMLIterator の機能を吸収しました。 SimpleXMLIterator は、 SimpleXMLElement を継承しただけのものです。
INI ファイルの扱いの変更
- com.dotnet_version は、dotnet オブジェクトで使う、 .NET framework のバージョンを選ぶための新しいINIディレクティブです。
- zend.exception_string_param_max_len は、文字列化されたスタックトレースの引数中の、 文字列の最大の長さを設定する新しいINIディレクティブです。
EBCDIC
EBCDIC ターゲットはサポートされなくなりました。 しかし、そもそもまだ動いているわけでもなさそうです。
パフォーマンスに関わる変更
- ジャストインタイム (JIT) コンパイラが opcache 拡張機能に追加されました。
- 隙間がない配列で array_slice() 関数を使う場合、 最初のオフセットを探すために配列全体を走査しなくなりました。 これによって、オフセットが巨大、かつサイズが小さい場合に、 関数の実行時間が著しく改善する可能性があります。
LC_CTYPE
ロケールが"C"
の場合 (これはデフォルトです)、 strtolower() 関数は SIMD 実装を使うようになりました。