PHPのお勉強!

PHP TOP

変更履歴

標準添付の拡張モジュールには次のような変更がありました。

VersionFunctionDescription
8.4.0DOMDocument::registerNodeClassDOMDocument::registerNodeClass メソッドは、 現在暫定的に true を返すようになりました。
 DOMImplementation::createDocumentこの関数の仮の戻り値の型が、DOMDocument になりました。
 bcpowNegative powers of 0 previously returned 0, but now throw a DivisionByZeroError exception.
 bind_textdomain_codesetdomain が空の string である場合、 ValueError をスローするようになりました。
 curl_multi_selecttimeout が 0 未満または PHP_INT_MAX を超える場合、ValueError をスローするようになりました。
 dba_closedba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_deletedba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_existsdba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_fetchdba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_firstkeydba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_insertdba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_key_splitkey に null または false を渡すことは、非推奨となりました。
 dba_nextkeydba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_openDba\Connection インスタンスを返すようになりました。 これより前のバージョンでは、リソース を返していました。
 dba_optimizedba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_popenDba\Connection インスタンスを返すようになりました。 これより前のバージョンでは、リソース を返していました。
 dba_replacedba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dba_syncdba は Dba\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、 dba リソース を期待していました。
 dgettextdomain が空の string である場合、 ValueError をスローするようになりました。
 dngettextdomain が空の string である場合、 ValueError をスローするようになりました。
 exitexit は言語構造から正式な関数になったので、 通常の 型の相互変換 に従い、 strict_types 宣言も適用されるようになりました。また、名前付き引数や 可変関数 によって呼び出すこともできるようになりました。
 flushFastCGI 利用時に、本文なしでヘッダをフラッシュできるようになりました。
 highlight_string戻り値の型が、stringbool から stringtrue に変更されました。
 imageavifquality または、speed が不正の場合、 ValueError をスローするようになりました。
 imagefilterIMG_FILTER_SCATTER filter で sub または plus がオーバーフローやアンダーフローを引き起こす場合、 ValueError をスローするようになりました。
 imagejpegquality が不正の場合、 ValueError をスローするようになりました。
 imagepngquality が不正の場合、 ValueError をスローするようになりました。
 imagescalewidth または height がオーバーフローやアンダーフローを引き起こす場合でも、 ValueError をスローするようになりました。
 imagescalemode が不正の場合、 ValueError をスローするようになりました。
 imagewebpquality が不正の場合、 ValueError をスローするようになりました。
 lcg_valueこの関数は非推奨となりました。
 libxml_set_streams_contextlibxml_set_streams_context は、 context に非ストリームリソースが渡された場合、 コンテキストが実際に使用されたときではなく、その場で TypeError をスローするようになりました。
 long2ip戻り値の型が、stringfalse から string に変更されました。
 pow基数が 0 の場合に、 exponent を負数とするのは非推奨となりました。
 print_r戻り値の型が、stringbool から stringtrue に変更されました。
 simplexml_import_domこの関数は、非XMLまたは非HTMLのnodeが渡された場合、 ValueError ではなく TypeError をスローするようになりました。
 socket_create_listenデフォルトの値は SOMAXCONN に設定されています。 以前のバージョンでは 128 でした。
 strcspnPHP 8.4.0 より前のバージョンでは、 characters が空の文字列の場合、 string 内の最初の null バイトで探索が誤って停止してしまうことがありました。
 stream_context_set_option2 引数のシグネチャは非推奨となりました。 代わりに stream_context_set_options を使用してください。
 textdomaindomain が空の string である場合、 ValueError をスローするようになりました。
 trigger_errorerror_level として E_USER_ERROR を指定するのは非推奨となりました。 かわりに、Exception をスローするか、 exit を呼び出してください。
 trigger_error戻り値の型が、bool ではなく true に変更されました。
 xml_parser_set_optionXML_OPTION_PARSE_HUGE が追加されました。
 xml_set_character_data_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_character_data_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 xml_set_default_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_default_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 xml_set_element_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_element_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 xml_set_end_namespace_decl_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_end_namespace_decl_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 xml_set_external_entity_ref_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_external_entity_ref_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 xml_set_notation_decl_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_notation_decl_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 xml_set_objectこの関数は非推奨になりました。 代わりに、xml_set_ 関数に適切な callable を渡してください。
 xml_set_processing_instruction_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_processing_instruction_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 xml_set_start_namespace_decl_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_start_namespace_decl_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 xml_set_unparsed_entity_decl_handler非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
 xml_set_unparsed_entity_decl_handlerhandler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
 mysqli::killmysqli::kill と mysqli_kill は非推奨となりました。代わりに KILL SQL コマンドを使用してください。
 mysqli::pingmysqli::ping と mysqli_ping は非推奨となりました。 reconnect 機能は PHP 8.2.0 で廃止されたため、この関数はもはや必要ありません。
 mysqli::refreshmysqli::refresh と mysqli_refresh は非推奨となりました。代わりに FLUSH SQL コマンドを使用してください。
 mysqli::store_resultmode パラメータの指定は非推奨となりました。 PHP 8.1 以降では、このパラメータを指定しても意味はありません。
 tidy::__constructコンストラクタの実行に失敗した場合、使用できないオブジェクトを黙って作るのではなく、例外をスローするようになりました。
 XMLReader::open無効な encoding を指定すると、 ValueError がスローされるようになりました。
 XMLReader::XML無効な encoding を指定すると、 ValueError がスローされるようになりました。
 XMLWriter::startDocumentencoding に null バイトを含む値を指定すると、 ValueError がスローされるようになりました。
 XSLTProcessor::setParameter引数のいずれかにヌルバイトが含まれている場合、ValueError例外が発生するようになりました。
 XSLTProcessor::setParameterパラメータの値に、シングルクォートとダブルクォートを同時に含められるようになりました。 PHP 8.4.0 より前のバージョンでは、警告が発生していました。
8.3.0DateInterval::__constructException の代わりに、 DateMalformedIntervalStringException がスローされるようになりました。
 DatePeriod::__constructException ではなく、 DateMalformedPeriodStringException がスローされるようになりました。
 DateTime::__construct無効な文字列が渡された場合、 Exception ではなく DateMalformedStringException がスローされるようになりました。
 DateTimeInterface::getTimestamp範囲外の例外が DateRangeError になりました。
 DateTime::modify無効な文字列が渡された場合、DateTime::modify については警告を発生させるのではなく DateMalformedStringException がスローされるようになりました。 date_modify は変更されていません。
 DateTime::subサポートされていない操作を試みた場合に、警告を発生させるのではなく、 DateInvalidOperationException がスローされるようになりました。 date_sub は変更されていません。
 DateTimeImmutable::__construct無効な文字列が渡された場合、 Exception ではなく DateMalformedStringException がスローされるようになりました。
 DateTimeImmutable::modify不正な文字列が渡された場合に、警告を発生させるのではなく、 DateMalformedStringException がスローされるようになりました。
 DateTimeImmutable::subサポートされていない操作を試みた場合に、警告を発生させるのではなく、 DateInvalidOperationException がスローされるようになりました。
 DateTimeZone::__construct無効な値を指定した場合、 一般的な Exception ではなく、DateInvalidTimeZoneException がスローされるようになりました。
 DOMCharacterData::after親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMCharacterData::afterオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMCharacterData::appendDataこの関数の仮の戻り値の型が、true になりました。
 DOMCharacterData::before親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMCharacterData::replaceWith親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMChildNode::after親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMChildNode::afterオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMChildNode::before親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMChildNode::replaceWith親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMDocument::appendオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMDocument::createAttributeNSprefix を指定せずにこのメソッドをコールしても、デフォルトの名前空間を仮定する代わりに prefix を選ぶようになりました。これより前のバージョンでは、prefix なしの属性を作成し、誤ってオーナーとなる要素の名前空間を適用していました。なぜなら、デフォルトの名前空間は属性には適用されないためです。
 DOMDocument::createAttributeNSオーナーとなる要素で prefix が既に異なる namespace URI で使われている場合にこのメソッドを呼び出しても、名前空間の衝突を避けるために新しく prefix を異なるものに変更するようになりました。これは DOM の仕様が要求する振る舞いに合わせるためです。これより前のバージョンでは、エラーコード DOM_NAMESPACE_ERR を持つ DOMException をスローしていました。
 DOMDocument::loadこの関数の仮の戻り値の型が、bool になりました。
 DOMDocument::loadHTMLこの関数の仮の戻り値の型が、bool になりました。
 DOMDocument::loadHTMLFileこの関数の仮の戻り値の型が、bool になりました。+
 DOMDocument::loadXMLこの関数の仮の戻り値の型が、bool になりました。
 DOMDocument::prependオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMDocument::replaceChildrenオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMDocument::saveXMLLIBXML_NOXMLDECL がサポートされました。
 DOMDocumentFragment::appendオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMDocumentFragment::prependオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMDocumentFragment::replaceChildrenオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMElement::after親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMElement::afterオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMElement::appendオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMElement::before親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMElement::prependオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMElement::replaceChildrenオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMElement::replaceWith親がないノードに対して、 このメソッドをコールしても何もしなくなりました。 これは DOM の仕様が要求する振る舞いに合わせるためです。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMParentNode::appendオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMParentNode::prependオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 DOMParentNode::replaceChildrenオーナーとなるドキュメントがないノードに対して、 このメソッドをコールしても動作するようになりました。 これより前のバージョンでは、エラーコード DOM_HIERARCHY_REQUEST_ERR を持つ DOMException がスローされていました。
 FFI::castCalling FFI::cast statically is now deprecated.
 FFI::cdefC functions returning void return a PHP null instead of FFI\CType::TYPE_VOID.
 FFI::loadFFI::load is now allowed in preload scripts when the current system user is the same as the one defined in the opcache.preload_user configuration directive.
 FFI::newCalling FFI::new statically is now deprecated.
 FFI::typeCalling FFI::type statically is now deprecated.
 array_padPHP 8.3 より前のバージョンでは、 一度に 1048576 個の要素しか追加できませんでした。 このバージョンからは、制限は配列の最大サイズのみになりました。
 array_productarray の値が整数や浮動小数点数に変換できない場合、 E_WARNING が発生するようになりました。 これより前のバージョンでは、 配列とオブジェクトが渡されても無視され、 それ以外の値は整数に変換されていました。 さらに、数値へのキャストが定義されているオブジェクト (例: GMP) は無視されるのではなく、 数値にキャストされるようになりました。
 array_sumarray の値が整数や浮動小数点数に変換できない場合、 E_WARNING が発生するようになりました。 これより前のバージョンでは、 配列とオブジェクトが渡されても無視され、 それ以外の値は整数に変換されていました。 さらに、数値へのキャストが定義されているオブジェクト (例: GMP) は無視されるのではなく、 数値にキャストされるようになりました。
 assertすべての assert. INI 設定は、推奨されなくなりました。
 assert_optionsassert_option は、推奨されなくなりました。
 class_aliasclass_alias は、内部クラスのエイリアスを作る機能をサポートしました。
 curl_getinfoCURLINFO_CAINFO と CURLINFO_CAPATH が追加されました。
 dba_fetchdba を第3引数に渡して dba_fetch をコールすることは、推奨されなくなりました。
 easter_date64ビットのシステムでは、 year の値として 1970 から 2,000,000,000 までの値を受け入れるようになりました。
 gc_statusgc_status は、 以下の追加のフィールドを返すようになりました: "running", "protected", "full", "buffer_size", "application_time", "collector_time", "destructor_time", and "free_time".
 get_classget_class を引数なしでコールすると、 E_DEPRECATED が発生するようになりました。 これより前のバージョンでは、クラスの内部でこの関数をコールすると、 そのクラスの名前を返していました。
 get_parent_classget_parent_class を引数なしでコールすると、 E_DEPRECATED が発生するようになりました。 これより前のバージョンでは、クラスの内部でこの関数をコールすると、 そのクラスの名前を返していました。
 highlight_file結果のHTMLが変更されました。
 highlight_string結果のHTMLが変更されました。
 imagerotate使われていなかった ignore_transparent が、完全に削除されました。
 ldap_connectldap_connect に、 hostname と port を別々に渡してコールすることは、推奨されなくなりました。
 mb_convert_caseギリシャ文字のシグマ向けに、条件付きのケースルールが実装されました。 これは MB_CASE_LOWER と MB_CASE_TITLE にのみ適用されます。 MB_CASE_LOWER_SIMPLE と MB_CASE_TITLE_SIMPLE には適用されません。
 mb_decode_mimeheaderアンダースコアは RFC 2047 に定められた通り、スペースに変換されるようになりました。
 mb_encode_mimeheaderNUL (0) バイトは、 Quoted-Printable エンコーディングを用いた場合でも削除されなくなりました。 代わりに、=00 でエンコードされます。
 mb_strimwidthmb_strimwidth に負の width を渡すことは、推奨されなくなりました。
 mb_strtolowerギリシャ文字のシグマ向けに、条件付きのケースルールが実装されました。
 mt_srandseed は、nullable になりました。
 odbc_autocommitenable は、nullable になりました。
 pg_convertフィールドの値や型が PostgreSQL の型と一致しない場合、 ValueError または TypeError がスローされるようになりました。 これより前のバージョンでは、 E_WARNING が発生していました。
 pg_fetch_objectconstructor_args が空ではないのに、 クラスにコンストラクタが存在しない場合、 ValueError がスローされるようになりました。 これより前のバージョンでは、Exception がスローされていました。
 pg_fetch_resultrow は、nullable になりました。
 pg_field_is_nullrow は、nullable になりました。
 pg_field_prtlenrow は、nullable になりました。
 pg_insert指定されたテーブルが無効な場合、 ValueError がスローされるようになりました。 これより前のバージョンでは、E_WARNING が発生していました。
 pg_insert値やフィールドの型が PostgreSQL の型と一致しない場合、 ValueError または TypeError がスローされるようになりました。 これより前のバージョンでは、E_WARNING が発生していました。
 pg_tracetrace_mode が追加されました。
 posix_eaccessファイルの実効ユーザー/グループを調べるようになりました。 実ユーザー/グループを調べる posix_access とは異なります。
 posix_getrlimitオプションの resource が追加されました。
 posix_isatty通常の PHP の型変換のセマンティクスに従い、 整数を変換した場合に、型のエラーに関する E_WARNING が発生するようになりました。
 posix_ttyname通常の PHP の型変換のセマンティクスに従い、 整数を変換した場合に、型のエラーに関する E_WARNING が発生するようになりました。
 posix_ttynamefile_descriptor が無効な整数値の場合に、 E_WARNING が発生するようになりました。
 rangestart と end が両方文字列の場合、range は常にバイト列を要素とした配列を生成するようになりました。 これより前のバージョンでは、境界の値のうちのひとつが数値形式の文字列の場合に、もう一方の境界の値を整数にキャストしていました。
 rangestart または end が 暗黙のうちに整数にキャストされた文字列の場合、 E_WARNING が発生するようになりました。 なぜなら、他の境界の入力値が数値だからです。
 rangestart または end が数値形式の文字列でなく、かつ長さが1バイトより大きい値の場合、 E_WARNING が発生するようになりました。
 rangestart または end が空文字列の場合、E_WARNING が発生するようになりました。
 rangestep が 端数のない float の場合、整数として解釈されるようになりました。
 rangestep が負の値なのに、生成される範囲が増えている場合、 ValueError がスローされるようになりました。
 rangestep が有限の値でない場合、 ValueError がスローされるようになりました。
 rangestart または end が配列、object、resource の場合、 TypeError がスローされるようになりました。 これより前のバージョンでは、これらの値は暗黙のうちに整数にキャストされていました。
 srandseed は、nullable になりました。
 strrchrbefore_needle が追加されました。
 strtoktoken が渡されない場合、E_WARNING が発生するようになりました。
 unserialize渡された文字列が復元できない場合、 E_WARNING が発生するようになりました。 これより前のバージョンでは、E_NOTICE が発生していました。
 xml_parser_get_optionこの関数は、boolean のオプションを返すようになりました。
 xml_parser_set_optionvalue パラメータは、 boolean の値を受け入れるようになりました。 XML_OPTION_CASE_FOLDING と XML_OPTION_SKIP_WHITE が boolean の値を受け入れるようになっています。
 IntlBreakIterator::setTextこの関数は、失敗時に false を返すようになりました。 これより前のバージョンでは null を返していました。
 IntlChar::enumCharNamesこの関数は、失敗時に false を返すようになりました。 これより前のバージョンでは null を返していました。
 IntlDateFormatter::setTimeZoneこの関数は、true を返すようになりました。 これより前のバージョンでは、null を返していました。
 mysqli_result::fetch_objectconstructor_args が空でないのに、 そのクラスがコンストラクタを持たない場合、 ValueError がスローされるようになりました。 これより前のバージョンでは、 Exception がスローされていました。
 mysqli::pollread と error を両方渡さなかった場合には、 ValueError がスローされるようになりました。
 Phar::setStubresource と length を渡して Phar::setStub をコールすることは、 推奨されなくなりました。 $phar->setStub(stream_get_contents($resource)); に置き換えるべきです。
 ReflectionClass::getStaticPropertiesReflectionClass::getStaticProperties の戻り値の型が、?array から array に変更されました。
 ReflectionProperty::setValueこのメソッドにひとつだけ引数を渡してコールすることは、推奨されなくなりました。static プロパティを変更する場合は、代わりに ReflectionClass::setStaticPropertyValue を使ってください。
 SQLite3::enableExceptionsenable を false にして SQLite3::enableExceptions をコールすると、E_DEPRECATED が発生するようになりました。
 ZipArchive::addFileZipArchive::FL_OPEN_FILE_NOW が追加されました。
 ZipArchive::addFileZipArchive::LENGTH_TO_END と ZipArchive::LENGTH_UNCHECKED が追加されました。
 ZipArchive::addGlobZipArchive::FL_OPEN_FILE_NOW が追加されました。
 ZipArchive::replaceFileZipArchive::FL_OPEN_FILE_NOW が追加されました。
 ZipArchive::replaceFileZipArchive::LENGTH_TO_END と ZipArchive::LENGTH_UNCHECKED が追加されました。
8.2.9DateTimeImmutable::createFromFormat(空白) 文字は、 新たに NBSP(U+A0) と NNBSP(U+202F) をサポートするようになりました。
8.2.1SplFileObject::__toStringSplFileObject::fgets のエイリアスから、 SplFileObject::current の実装に変わりました。 この実装は、 SplFileObject::READ_CSV フラグを設定すると、 CSV の文字列を返します。
8.2.0ArrayIterator::asort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayIterator::ksort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayIterator::natcasesort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayIterator::natsort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayIterator::uasort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayIterator::uksort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayObject::asort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayObject::ksort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayObject::natcasesort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayObject::natsort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayObject::uasort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ArrayObject::uksort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 DateInterval::__constructアクセス可能なプロパティは y から f, invert, days だけになりました。 新しい boolean プロパティ from_string もアクセス可能です。
 DateInterval::createFromDateStringこのメソッドを使って DateInterval を作った場合、 アクセス可能なプロパティは from_string と date_string だけになりました。
 DatePeriod::__construct定数 DatePeriod::INCLUDE_END_DATE が追加されました。
 DateTime::createFromFormatdatetime に NULLバイトが含まれている場合は、 ValueError がスローされるようになりました。 これより前のバージョンでは、こうした値は静かに無視されていました。
 DateTimeInterface::formatフォーマット文字に X と x が追加されました。
 DateTimeImmutable::createFromFormatformat に指定できる文字に、 X と x が追加されました。
 DateTimeImmutable::createFromFormatdatetime に NULLバイトが含まれている場合は、 ValueError がスローされるようになりました。 これより前のバージョンでは、こうした値は静かに無視されていました。
 DateTimeImmutable::getLastErrorsPHP 8.2.0 より前のバージョンでは、 この関数は警告やエラーがない場合でも false を返しませんでした。 代わりに、例に示している、警告やエラーに関する情報を含む配列を常に返していました。
 FilesystemIterator::__constructPHP 8.2.0 より前のバージョンでは、 FilesystemIterator::SKIP_DOTS は常に設定され、削除できませんでした。
 array_walk戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 array_walk_recursive戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 arsort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 asort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 curl_getinfoCURLINFO_PROXY_ERROR, CURLINFO_REFERER, CURLINFO_RETRY_AFTER が追加されました。
 curl_multi_setoptCURLMOPT_MAX_CONCURRENT_STREAMS が追加されました。
 date_parse_from_formatdatetime に NULLバイトが含まれている場合は、 ValueError がスローされるようになりました。 これより前のバージョンでは、こうした値は静かに無視されていました。
 dba_fetchdba_fetch 関数のオプションの skip 引数は、 PHP でユーザーが使える関数のセマンティクスに従い、 最後に置かれるようになりました。 以前のオーバーロードされたシグネチャも引き続き許可されますが、 使わないことをお勧めします。
 dba_openflags が追加されました。
 dba_openhandler は、nullable になりました。
 dba_popenflags が追加されました。
 getimagesizeAVIF 画像の ビット数、チャンネル情報、幅と高さの情報(dimensions) を返すようになりました。 これより前のバージョンでは、幅と高さの情報は 0x0 として報告され、ビット数とチャンネル情報は全く報告されていませんでした。
 idateフォーマット文字 N (ISO-8601 形式の曜日) と o (ISO-8601 形式の年) が追加されました。
 iterator_countiterator の型が Traversable から、 Traversablearray に拡大されました。
 iterator_to_arrayiterator の型が Traversable から、 Traversablearray に拡大されました。
 krsort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 krsortSORT_REGULAR を使って数値文字列の比較を行う際に、 PHP 8 で標準になっているルールを使うようになりました。
 ksort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ksortSORT_REGULAR を使って数値文字列の比較を行う際に、 PHP 8 で標準になっているルールを使うようになりました。
 lcfirstケース変換は、setlocale で設定されたロケールに依存しなくなりました。 ASCII 文字のみが変換されます。
 mb_convert_encodingmb_convert_encoding は、 以下のテキストでないエンコーディングを返さなくなりました: "Base64", "QPrint", "UUencode", "HTML entities", "7 bit", "8 bit"
 mb_convert_kana異なる mode の組み合わせが無効な場合、 ValueError がスローされるようになりました。
 mb_detect_encodingmb_detect_encoding は、 以下のテキストでないエンコーディングを返さなくなりました: "Base64", "QPrint", "UUencode", "HTML entities", "7 bit", "8 bit"
 natcasesort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 natsort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 openlogこの関数は、常に true を返すようになりました。 これより前のバージョンでは、失敗時に false を返していました。
 pg_close戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 pg_untrace戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 random_bytesCSPRNG が失敗した場合に、 Random\RandomException をスローするようになりました。 これより前のバージョンでは、Exception をスローしていました。
 random_intCSPRNG が失敗した場合に、 Random\RandomException をスローするようになりました。 これより前のバージョンでは、Exception をスローしていました。
 rsort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 setcookieCookie の日付フォーマットが 'D, d M Y H:i:s \G\M\T' になりました。 これより前のバージョンでは 'D, d-M-Y H:i:s T' でした。
 snmp_set_enum_print戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 snmp_set_oid_output_format戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 snmp_set_quick_print戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 snmp_set_valueretrieval戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 sort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 str_ireplaceケースフォールディングは、setlocale で設定されたロケールに依存しなくなりました。 ASCII のケースフォールディングのみが行われます。 ASCII でないバイト列は、バイト値として比較されます。
 str_splitstring が空の場合、 空の配列が返されるようになりました。 これより前のバージョンでは、空文字列がひとつ入った配列が返されていました。
 strcasecmpこれより前のバージョンで負の数と正の数を返していた場合に、 この関数は -1 と 1 を返すようになりました。
 strcmpこれより前のバージョンで負の数と正の数を返していた場合に、 この関数は -1 と 1 を返すようになりました。
 striposケースフォールディングは、setlocale で設定されたロケールに依存しなくなりました。 ASCII のケースフォールディングのみが行われます。 ASCII でないバイト列は、バイト値として比較されます。
 stristrケースフォールディングは、setlocale で設定されたロケールに依存しなくなりました。 ASCII のケースフォールディングのみが行われます。 ASCII でないバイト列は、バイト値として比較されます。
 strnatcasecmpこれより前のバージョンで負の数と正の数を返していた場合に、 この関数は -1 と 1 を返すようになりました。
 strnatcmpこれより前のバージョンで負の数と正の数を返していた場合に、 この関数は -1 と 1 を返すようになりました。
 strncasecmpこれより前のバージョンで負の数と正の数を返していた場合に、 この関数は -1 と 1 を返すようになりました。
 strncmpこれより前のバージョンで負の数と正の数を返していた場合に、 この関数は -1 と 1 を返すようになりました。
 strriposケースフォールディングは、setlocale で設定されたロケールに依存しなくなりました。 ASCII のケースフォールディングのみが行われます。 ASCII でないバイト列は、バイト値として比較されます。
 strtolowerケース変換は、setlocale で設定されたロケールに依存しなくなりました。 ASCII 文字のみが変換されます。
 strtoupperケース変換は、setlocale で設定されたロケールに依存しなくなりました。 ASCII 文字のみが変換されます。
 substr_compareこれより前のバージョンで負の数と正の数を返していた場合に、 この関数は -1 と 1 を返すようになりました。
 uasort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ucfirstケース変換は、setlocale で設定されたロケールに依存しなくなりました。 ASCII 文字のみが変換されます。
 ucwordsケース変換は、setlocale で設定されたロケールに依存しなくなりました。 ASCII 文字のみが変換されます。
 uksort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 usort戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 utf8_decodeこの関数は、推奨されなくなりました。
 utf8_encodeこの関数は、推奨されなくなりました。
 var_exportクラス名をエクスポートする場合、そのクラス名は完全修飾名になりました。 これより前のバージョンでは、先頭のバックスラッシュが省略されていました。
 IntlCalendar::clear戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 IntlCalendar::set戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 IntlCalendar::setFirstDayOfWeek戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 IntlCalendar::setLenient戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 IntlCalendar::setRepeatedWallTimeOption戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 IntlCalendar::setSkippedWallTimeOption戻り値の型が、true になりました。これより前のバージョンでは、bool でした。
 ReflectionEnum::getBackingType戻り値の型が、 ?ReflectionNamedType として宣言されるようになりました。 これより前のバージョンでは、 ?ReflectionType が宣言されていました。
8.1.14SplFileObject::__toStringSplFileObject::fgets のエイリアスから、 SplFileObject::current の実装に変わりました。 この実装は、 SplFileObject::READ_CSV フラグを設定すると、 CSV の文字列を返します。
8.1.8DateTime::createFromFormatdatetime に NULLバイトが含まれている場合は、 ValueError がスローされるようになりました。 これより前のバージョンでは、こうした値は静かに無視されていました。
 DateTimeImmutable::createFromFormatdatetime に NULLバイトが含まれている場合は、 ValueError がスローされるようになりました。 これより前のバージョンでは、こうした値は静かに無視されていました。
 date_parse_from_formatdatetime に NULLバイトが含まれている場合は、 ValueError がスローされるようになりました。 これより前のバージョンでは、こうした値は静かに無視されていました。
8.1.0DateTime::setTime(夏時間遷移のフォールバック期間中に) 二重に存在する hour に関する振る舞いが変更されました。 これより前のバージョンでは、 (夏時間遷移が起こる前の)最初の hour ではなく、 (夏時間遷移が起きた後の)二番目の hour を取得していました。
 DateTimeImmutable::setTime(夏時間遷移のフォールバック期間中に) 二重に存在する hour に関する振る舞いが変更されました。 これより前のバージョンでは、 (夏時間遷移が起こる前の)最初の hour ではなく、 (夏時間遷移が起きた後の)二番目の hour を取得していました。
 DirectoryIterator::keyイテレーターが初期化されていない場合、 Error がスローされるようになりました。 これより前のバージョンでは、false を返していました。
 DOMDocument::createCommentエラーが発生した場合に、 DomException をスローするようになりました。 これより前のバージョンでは、false を返していました。
 DOMDocument::createDocumentFragmentエラーが発生した場合に、 DomException をスローするようになりました。 これより前のバージョンでは、false を返していました。
 DOMDocument::createTextNodeエラーが発生した場合に、 DomException をスローするようになりました。 これより前のバージョンでは、false を返していました。
 currentこの関数を object に対してコールすることは、推奨されなくなりました。 object に対して最初に get_mangled_object_vars を使って配列に変換するか、ArrayIterator のような Iterator を実装したクラスのメソッドを使ってください。
 date_sunriseこの関数は、推奨されなくなりました。 date_sun_info を代わりに使って下さい。
 date_sunsetこの関数は、推奨されなくなりました。 date_sun_info を使って下さい。
 dba_popenhandler は、nullable になりました。
 endこの関数を object に対してコールすることは、推奨されなくなりました。 object に対して最初に get_mangled_object_vars を使って配列に変換するか、ArrayIterator のような Iterator を実装したクラスのメソッドを使ってください。
 exif_imagetypeAVIF をサポートしました。
 finfo_buffer引数 finfo は、finfo クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 finfo_close引数 finfo は、finfo クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 finfo_file引数 finfo は、finfo クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 finfo_openfinfo クラスのインスタンスを返すようになりました。 これより前のバージョンでは、 リソース を返していました。
 finfo_set_flags引数 finfo は、finfo クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 fputcsvオプションの引数 eol が追加されました。
 ftp_alloc引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_append引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_cdup引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_chdir引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_chmod引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_close引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_connectFTP\Connection クラスのインスタンスを返すようになりました。 これより前のバージョンでは、 リソース が返されていました。
 ftp_delete引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_exec引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_fget引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_fput引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_get引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_get_option引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_login引数 ftp は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
 ftp_mdtm引数 ftp は、FTP\Connection