PHP モジュールの名前が php7_module
から
php_module
に変更されました。
ReflectionClass::getConstants() と
ReflectionClass::getReflectionConstants() の結果は
新しい引数 filter
を経由してフィルタされるように変更されました。
この用途のために、以下の3つの新しい定数が追加されています:
ReflectionClassConstant::IS_PUBLIC
ReflectionClassConstant::IS_PROTECTED
ReflectionClassConstant::IS_PRIVATE
数学関数
abs(),
ceil(),
floor(),
round()
は、
strict_types
ディレクティブ
を適切に尊重するようになりました。
PHP 8.0.0 より前のバージョンでは、
たとえ strict モードであっても、
最初の引数の型を強制的に自動変換していました。
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() メソッドは、ファイルの変更時間も復元するようになりました。
CURL 拡張機能は、libcurl 7.29.0 以降が必須になりました。
推奨されなくなっていた curl_version() 関数の
version
引数が削除されました。
DatePeriod クラスが、 (Traversable ではなく) IteratorAggregate を実装しました。
DOMNamedNodeMap と DOMNodeList が、 (Traversable ではなく) IteratorAggregate を実装しました。
IntlBreakIterator と ResourceBundle が、 (Traversable ではなく) IteratorAggregate を実装しました。
enchant 拡張機能は、利用可能な場合は、デフォルトで libenchant-2 を使うようになりました。 libenchant バージョン1 もまだサポートしていますが、推奨されませんし、将来削除される可能性があります。
imagepolygon(),
imageopenpolygon(),
imagefilledpolygon() 関数の
num_points
引数はオプションになりました。
つまり、これらの関数は3つ、または4つの引数で呼び出すことが出来るということです。
この引数が省略された場合、この値は count($points)/2
で計算されます。
現在の補間メソッドを取得するために、imagegetinterpolation() 関数が追加されました。
JSON 拡張機能は無効にできなくなりました。 date 拡張機能と同様に、PHP をビルドするために常に必須になっています。
Unicode データのテーブルが、バージョン 13.0.0 に更新されました。
PDOStatement は、 (Traversable ではなく) IteratorAggregate を実装しました。
libxml の最低バージョンが 2.9.0 になりました。 これにより、外部エンティティの読み込みがデフォルトで無効であることが保証されるようになりました。 よって、XXE攻撃を防ぐために追加の手順を踏む必要はありません。
mysqlnd を使わない (これはデフォルトであり、推奨されるオプションです) 場合、 サポートされる libmysqlclient の最低バージョンは 5.5 になりました。
mysqli_result は、 (Traversable ではなく) IteratorAggregate を実装しました。
PGSQL と PDO PGSQL 拡張機能は、libpq 9.1 以降が最低限必要になりました。
対話的なプロンプトが始まる前に (つまり、 auto_prepend_file を実行中に) readline_completion_function() を呼ぶと、 デフォルトの対話プロンプトの補完関数を上書きするようになりました。 PHP 8.0.0 より前のバージョンでは、 readline_completion_function() 関数は 対話的なプロンプトが始まった後に呼び出したときにだけ動作していました。
SimpleXMLElement は、 RecursiveIterator を実装し、 SimpleXMLIterator の機能を吸収しました。 SimpleXMLIterator は、 SimpleXMLElement を継承しただけのものです。
com.dotnet_version は、dotnet オブジェクトで使う、 .NET framework のバージョンを選ぶための新しいINIディレクティブです。
zend.exception_string_param_max_len は、文字列化されたスタックトレースの引数中の、 文字列の最大の長さを設定する新しいINIディレクティブです。
EBCDIC ターゲットはサポートされなくなりました。 しかし、そもそもまだ動いているわけでもなさそうです。
ジャストインタイム (JIT) コンパイラが opcache 拡張機能に追加されました。
隙間がない配列で array_slice() 関数を使う場合、 最初のオフセットを探すために配列全体を走査しなくなりました。 これによって、オフセットが巨大、かつサイズが小さい場合に、 関数の実行時間が著しく改善する可能性があります。
LC_CTYPE
ロケールが
"C"
の場合 (これはデフォルトです)、
strtolower() 関数は SIMD 実装を使うようになりました。