# 更新日志

对绑定的扩展的函数有以下更新。

Version | Function | Description
--- | --- | ---
8.5.0 | array_key_exists | 在 key 参数中使用 null 已被弃用，请改用空字符串。
| array_multisort | 返回类型现在是 true；之前是 bool。
| cli_set_process_title | cli_set_process_title will now emit an E_WARNING when setting a process title that is too long; previously the title would be truncated.
| closedir | 现在已弃用将 dir_handle 设为 null 的做法，应明确提供最近打开的目录句柄。
| curl_close | 此函数已被弃用。
| finfo_close | 此函数已被弃用。
| finfo_close | 返回类型现在是 true；之前是 bool。
| ftp_set_option | 返回类型现在是 true；之前是 bool。
| get_defined_functions | 已弃用 exclude_disabled 参数，因为它不再具有任何作用。
| grapheme_stripos | 已新增可选参数 locale。
| grapheme_stristr | 已新增可选参数 locale。
| grapheme_strpos | 已新增可选参数 locale。
| grapheme_strripos | 已新增可选参数 locale。
| grapheme_strrpos | 已新增可选参数 locale。
| grapheme_strstr | 已新增可选参数 locale。
| grapheme_substr | 已新增可选参数 locale。
| gzfile | use_include_path is now of type bool. Previously, it was of type int.
| gzopen | use_include_path is now of type bool. Previously, it was of type int.
| imagedestroy | 此函数已被弃用。
| ldap_get_option | ldap is now nullable.
| libxml_set_external_entity_loader | The return type is true now; previously, it was bool.
| openssl_cms_encrypt | cipher_algo is now of type int or string. Previously, it was of type int.
| openssl_pkey_derive | The parameter key_length is now deprecated.
| openssl_private_decrypt | 添加了可选参数 digest_algo。
| openssl_public_encrypt | 添加了可选参数 digest_algo。
| openssl_sign | The optional parameter padding has been added.
| openssl_verify | 添加了可选参数 padding。
| pcntl_waitid | 增加了 resource_usage。
| pg_copy_from | rows 现在是 iterable 类型。 之前是 array 类型。
| posix_fpathconf | Now sets last_error to EBADF and raises an E_WARNING when an invalid file descriptor is encountered.
| posix_isatty | Now raises an E_WARNING when an invalid file_descriptor is encountered.
| posix_kill | Now throws a ValueError when process_id is lower or greater than what the platform supports (signed integer or long range).
| posix_setpgid | Now throws a ValueError when process_id or process_group_id is lower than zero or greater than what the platform supports.
| posix_setrlimit | Now throws a ValueError when hard_limit or soft_limit is lower than -1, or when soft_limit is greater than hard_limit.
| posix_ttyname | last_error is now set to EBADF when an invalid file_descriptor is encountered.
| readdir | 现在已弃用将 dir_handle 设为 null 的做法，应明确提供最近打开的目录句柄。
| readgzfile | use_include_path is now of type bool. Previously, it was of type int.
| rewinddir | 现在已弃用将 dir_handle 设为 null 的做法，应明确提供最近打开的目录句柄。
| setlocale | 将整数 0 作为 locales 参数传递给 setlocale 不再受支持，现会抛出 TypeError。
| shm_detach | The return type is true now; previously, it was bool.
| snmp2_get | Now throws a ValueError when the hostname length is equal to or greater than 128 bytes, when the port is negative or greater than 65535, or when the timeout or retries values are lower than -1 or too large.
| snmp2_set | Now throws a ValueError when the hostname length is equal to or greater than 128 bytes, when the port is negative or greater than 65535, or when the timeout or retries values are lower than -1 or too large.
| snmp3_get | Now throws a ValueError when the hostname length is equal to or greater than 128 bytes, when the port is negative or greater than 65535, or when the timeout or retries values are lower than -1 or too large.
| snmp3_set | Now throws a ValueError when the hostname length is equal to or greater than 128 bytes, when the port is negative or greater than 65535, or when the timeout or retries values are lower than -1 or too large.
| Locale::isRightToLeft | Added Locale::isRightToLeft.
| Pdo\Pgsql::copyFromArray | rows now also accepts a Traversable; previously only an array was accepted.
| PDO::pgsqlCopyFromArray | The rows parameter now also accepts a Traversable; previously only an array was accepted.
| ReflectionProperty::getDefaultValue | Calling ReflectionProperty::getDefaultValue for properties without default values has been deprecated.
| ReflectionProperty::setAccessible | This method has been deprecated, as it no longer has an effect.
| SoapClient::__doRequest | The optional parameter uriParserClass has been added.
| SoapFault::__construct | The optional parameter lang has been added in order to be compliant with the SOAP 1.2 specification.
| SoapServer::fault | The optional parameter lang has been added in order to be compliant with the SOAP 1.2 specification.
| SplFileObject::fwrite | length is now nullable.
| SplObjectStorage::attach | This method has been deprecated in favor of SplObjectStorage::offsetSet.
| SplObjectStorage::contains | This method has been deprecated in favor of SplObjectStorage::offsetExists.
| SplObjectStorage::detach | This method has been deprecated in favor of SplObjectStorage::offsetUnset.
8.4.0 | DateInterval::createFromDateString | Now has a tentative return type of DateInterval. Previously it was DateIntervalfalse.
| DatePeriod::__construct | The signature using isostr has been deprecated, use DatePeriod::createFromISO8601String instead.
| DateTimeImmutable::modify | Now has a tentative return type of DateTimeImmutable. Previously it was DateTimeImmutablefalse.
| DOMDocument::registerNodeClass | DOMDocument::registerNodeClass now has a tentative return of true.
| DOMImplementation::createDocument | The function now has the tentative return type DOMDocument.
| DOMXPath::registerPhpFunctions | It is now possible to use callables for callbacks when using restrict with array entries.
|  | Invalid callback names now throws a ValueError. Passing a non-callable entry now throws a TypeError.
| bcpow | 0 的负幂以前返回 0，但现在会引发 DivisionByZeroError 异常。
| bind_textdomain_codeset | Now throws a ValueError if domain is the empty string.
| bind_textdomain_codeset | codeset is optional now. Previously, the parameter always had to be specified.
| bindtextdomain | directory is optional now. Previously, the parameter always had to be specified.
| curl_getinfo | 引入 CURLINFO_POSTTRANSFER_TIME_T 常量和 posttransfer_time_us（Curl 8.10.0 或更高版本）。
| curl_multi_select | 如果 timeout 小于 0 或者大于 PHP_INT_MAX，现在抛出 ValueError。
| curl_setopt | CURLOPT_DNS_USE_GLOBAL_CACHE 不再有任何效果，并且在线程安全 PHP 上启用不再触发警告。
| curl_version | 新增 features_list。
| dba_close | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_delete | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_exists | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_fetch | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_firstkey | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_insert | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_key_split | 将 null 或者 false 传递给 key 现在已经被弃用。
| dba_nextkey | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_open | 现在返回一个 Dba\Connection 实例； 以前返回一个 resource。
| dba_optimize | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_popen | 现在返回一个 Dba\Connection 实例； 以前返回一个 resource。
| dba_replace | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dba_sync | dba 参数现在接受 Dba\Connection 实例， 之前接受有效的 dba resource。
| dgettext | Now throws a ValueError if domain is the empty string.
| dngettext | Now throws a ValueError if domain is the empty string.
| exit | exit 现在是真正的函数，因此遵循通用的类型处理语义，受 strict_types 声明的影响，可以用命名参数调用，并且是变量函数。
| fgetcsv | 现在已弃用依赖 escape 的默认值。
| flush | 现在在 FastCGI 中，可以成功冲刷没有主体的 header。
| fputcsv | 现在已弃用依赖 escape 的默认值。
| hash_init | 现在已弃用传递错误类型的选项。
| hash_update | 现在返回类型为 true，而不是 bool。
| highlight_string | 返回类型从 stringbool 变更为 stringtrue。
| http_build_query | PHP 8.4.0 之前，BackedEnum 类型的 data 属性会转换为对象，而不是其对应的标量值。
| imageavif | Now throws a ValueError if quality or speed is invalid.
| imagefilter | 现在抛出 ValueError 异常，如果 sub 或 plus 会导致 IMG_FILTER_SCATTER filter 的溢出/下溢。
| imagejpeg | 现在如果 quality 无效，抛出 ValueError。
| imagepng | 现在如果 quality 无效，抛出 ValueError。
| imagescale | Now throws a ValueError if width or height would cause over-/underflow.
| imagescale | Now throws a ValueError if mode is invalid.
| imagewebp | 现在如果 quality 无效，抛出 ValueError。
| lcg_value | 此函数已被弃用。
| ldap_connect | Calling ldap_connect with more than two arguments is now deprecated.
| ldap_exop | Using more than 4 parameters has been deprecated, use ldap_exop_sync instead.
| libxml_set_streams_context | libxml_set_streams_context now throws a TypeError when a non-stream resource is passed to context, instead of throwing later when the context is used.
| long2ip | 返回类型从 stringfalse 改为 string。
| mb_decode_numericentity | 如果 map 不是 ints 的列表， mb_decode_numericentity 现在抛出 ValueError。
| mb_encode_numericentity | mb_encode_numericentity now throws a ValueError if map is not a list of ints.
| mb_http_input | 如果 type 无效，mb_http_input 现在抛出 ValueError。
| mb_http_output | 如果 encoding 包含空字节， mb_http_output 现在抛出 ValueError。
| odbc_autocommit | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_binmode | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_close | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_columnprivileges | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_columns | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_commit | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_connect | 此函数现在返回 Odbc\Connection 实例；之前返回 resource。
| odbc_connect | user and password are now nullable, they are now also optional and default to null.
| odbc_connect | Previously, using an empty string for password would not include pwd in the generated connection string for dsn. It is now generated to include a pwd which has an empty string as its value. To restore the previous behaviour password can now be set to null.
| odbc_connect | Previously, if dsn contained uid or pwd both user and password parameters were ignored. Now user is only ignored if dsn contains uid, and password is only ignored if dsn contains pwd.
| odbc_cursor | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_data_source | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_error | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_errormsg | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_exec | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_exec | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_execute | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_fetch_array | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_fetch_array | row is now nullable.
| odbc_fetch_into | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_fetch_into | row is now nullable.
| odbc_fetch_object | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_fetch_object | row is now nullable.
| odbc_fetch_row | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_fetch_row | An E_WARNING is now emitted when row is equal or less than zero.
| odbc_field_len | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_field_name | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_field_num | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_field_scale | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_field_type | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_foreignkeys | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_foreignkeys | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_free_result | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_gettypeinfo | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_gettypeinfo | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_longreadlen | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_next_result | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_num_fields | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_num_rows | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_pconnect | 此函数现在返回 Odbc\Connection 实例；之前返回 resource。
| odbc_pconnect | user and password are now nullable, they are now also optional and default to null.
| odbc_pconnect | Previously, using an empty string for password would not include pwd in the generated connection string for dsn. It is now generated to include a pwd which has an empty string as its value. To restore the previous behaviour password can now be set to null.
| odbc_pconnect | Previously, if dsn contained uid or pwd both user and password parameters were ignored. Now user is only ignored if dsn contains uid, and password is only ignored if dsn contains pwd.
| odbc_prepare | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_prepare | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_primarykeys | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_primarykeys | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_procedurecolumns | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_procedurecolumns | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_procedures | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_procedures | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_result | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_result_all | statement 现在需要 Odbc\Result 实例；之前需要 resource。
| odbc_rollback | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_setoption | odbc expects an Odbc\Connection or an Odbc\Result instance now; previously, a resource was expected.
| odbc_specialcolumns | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_specialcolumns | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_statistics | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_statistics | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_tableprivileges | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_tableprivileges | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| odbc_tables | odbc 现在需要 Odbc\Connection 实例；之前需要 resource。
| odbc_tables | 此函数现在返回 Odbc\Result 实例；之前返回 resource。
| openssl_csr_new | distinguished_names 关联数组现在支持 value 为数组，允许为单个属性指定多个值。
| openssl_csr_new | extra_attributes 参数现在可以正确设置 CSR 属性，而不是像以前错误地修改主题的专用名称。
| openssl_csr_sign | 添加了 serial_hex 参数。
| openssl_password_hash | Function added.
| openssl_password_verify | Function added.
| openssl_pkey_get_details | 新增对基于 Curve25519 和 Curve448 的密钥支持。特别是引入了 x25519、ed25519、x448 和 ed448 字段。
| openssl_pkey_new | 引入 x25519、ed25519、x448 和 ed448 字段，增加了对基于 Curve25519 和 Curve448 的密钥支持。
| openssl_x509_parse | OpenSSL 所有版本均不再允许解析不含秒数的 UTCTime 格式证书。自 OpenSSL 3.3 版本起，该格式已被明确禁止。
| password_hash | PASSWORD_BCRYPT 算法的 cost 选项的默认值从 10 增加到 12。
| pcntl_sigprocmask | 如果 signal 为空，则抛出 ValueError。
| pcntl_sigprocmask | 如果 signal 的值不是 int，则抛出 TypeError。
| pcntl_sigprocmask | 如果 signal 的值无效，则抛出 ValueError。
| pcntl_sigprocmask | 如果 mode 的值不是 SIG_BLOCK、SIG_UNBLOCK 或 SIG_SETMASK，则抛出 ValueError。
| pcntl_sigtimedwait | 如果 signal 为空，则抛出 ValueError。
| pcntl_sigtimedwait | 如果 signal 的值不是 int，则抛出 TypeError。
| pcntl_sigtimedwait | 如果 signal 的值无效，则抛出 ValueError。
| pcntl_sigtimedwait | 如果 seconds 的值小于 0，则抛出 ValueError。
| pcntl_sigtimedwait | 如果 nanoseconds 的值小于 0，则抛出 ValueError。
| pcntl_sigtimedwait | 如果 seconds 和 nanoseconds 的值都是 0，则抛出 ValueError。
| pcntl_sigwaitinfo | 如果 signal 为空，则抛出 ValueError。
| pcntl_sigwaitinfo | 如果 signal 的值不是 int，则抛出 TypeError。
| pcntl_sigwaitinfo | 如果 signal 的值无效，则抛出 ValueError。
| pg_select | conditions 现在是可选的。
| php_uname | 当指定的 mode 无效时，抛出 ValueError。
| posix_isatty | Set errno (error number) to EBADF when the file descriptor/stream passed is invalid.
| print_r | 返回类型从 stringbool 变为 stringtrue。
| round | 新增了四种舍入模式。
| round | 如果 mode 是无效的，现在将抛出 ValueError 异常。
| simplexml_import_dom | Added support for Dom\Document.
| simplexml_import_dom | This function now throws a TypeError instead of a ValueError when passed a non-XML or non-HTML node.
| socket_create_listen | 默认值现在是 SOMAXCONN。 之前是 128。
| str_getcsv | 现在已弃用依赖 escape 的默认值。
| str_getcsv | 如果 separator、enclosure 或 escape 无效，现在会抛出 ValueError。这模仿了 fgetcsv 和 fputcsv 的行为。
| strcspn | 在 PHP 8.4.0 之前，当 characters 为空字符串时，搜索会错误地停止在 string 的第一个 null 字节处。
| stream_bucket_append | bucket 现在期望 StreamBucket 实例；之前期望 stdClass。
| stream_bucket_make_writeable | 此函数现在返回 StreamBucket 实例；之前返回 stdClass。
| stream_bucket_new | 此函数现在返回 StreamBucket 实例；之前返回 stdClass。
| stream_bucket_prepend | bucket 现在期望 StreamBucket 实例；之前期望 stdClass。
| stream_context_set_option | 替代的双参数签名已被弃用。 请使用 stream_context_set_options 代替。
| textdomain | Now throws a ValueError if domain is the empty string.
| textdomain | domain is optional now. Previously, the parameter always had to be specified.
| trigger_error | 现已弃用传递 E_USER_ERROR 作为 error_level。抛出 Exception 或调用 exit。
| trigger_error | 此函数现在返回类型是 true 而不是 bool。
| unserialize | 如果 options 的 allowed_classes 元素不是类名 array，现在会抛出 TypeError 和 ValueError。
| IntlCalendar::set | This had been deprecated in favor of the methods IntlCalendar::setDate and IntlCalendar::setDateTime.
| IntlDateFormatter::create | A ValueError is thrown if locale is invalid.
| IntlGregorianCalendar::__construct | This had been deprecated in favor of the methods IntlGregorianCalendar::createFromDate and IntlGregorianCalendar::createFromDateTime.
| mysqli::kill | mysqli::kill 和 mysqli_kill 都已弃用。使用 KILL SQL 命令代替。
| mysqli::ping | mysqli::ping 和 mysqli_ping 都已弃用。自 PHP 8.2.0 起，reconnect 功能已不可用，因此该函数已过时。
| mysqli::refresh | mysqli::refresh 和 mysqli_refresh 都已弃用。使用 FLUSH SQL 命令代替。
| mysqli::store_result | 现在弃用传递 mode 参数。该参数自 PHP 8.1.0 起不再有效。
| NumberFormatter::create | A ValueError is thrown if locale is invalid.
| Phar::setAlias | Phar::setAlias now has a tentative return of true.
| Phar::setDefaultStub | Phar::setDefaultStub now has a tentative return of true.
| Phar::setStub | The return type is true now; previously, it was bool.
| PharData::setStub | The return type is true now; previously, it was bool.
| PDO_ODBC DSN | When passing an empty string to the password argument in the PDO constructor, pwd was not included in the connection string created until now, but the behavior has been changed to include it as an empty string. Passing null for the password argument in the PDO constructor results in the same behavior as before.
| PDO_ODBC DSN | Changed the behavior to ignore the user name argument and the password argument in the PDO constructor separately when the DSN contains uid or pwd. Previously, if included only either uid or pwd in the DSN, both the user name argument and the password argument in the PDO constructor were ignored.
| ReflectionClassConstant::__toString | The attached doc comment is now included.
| ReflectionGenerator::getFunction | ReflectionGenerator::getFunction may now be called after the generator finished executing.
| ReflectionProperty::__toString | The attached doc comment is now included.
| ResourceBundle::get | A TypeError is thrown if the offset type is invalid. A ValueError is thrown if if index is a string and is empty or is a int and does not fit into a 32 bit integer type.
| SplFileObject::fgetcsv | 现在已弃用依赖 escape 的默认值。
| SplFileObject::fputcsv | 现在已弃用依赖 escape 的默认值。
| SplFileObject::setCsvControl | 现在已弃用依赖 escape 的默认值。
| SplFixedArray::setSize | SplFixedArray::setSize now has a tentative return of true.
| SplFixedArray::__wakeup | This method is now deprecated, use SplFixedArray::__unserialize instead.
| SplHeap::insert | SplHeap::insert now has a tentative return of true.
| SplHeap::recoverFromCorruption | SplHeap::recoverFromCorruption now has a tentative return of true.
| SplPriorityQueue::insert | SplPriorityQueue::insert now has a tentative return of true.
| SplPriorityQueue::recoverFromCorruption | SplPriorityQueue::recoverFromCorruption now has a tentative return of true.
| tidy::__construct | Failures when executing the constructor now throw instead of silently creating an unusable object.
| XMLReader::open | Passing an invalid encoding will now throw a ValueError.
| XMLReader::XML | Passing an invalid encoding will now throw a ValueError.
| XMLWriter::startDocument | Passing an encoding containing null bytes will now throw a ValueError.
| XSLTProcessor::importStylesheet | Added support for Dom\Document.
| XSLTProcessor::importStylesheet | Now throws a TypeError instead of a ValueError if stylesheet is not an XML object.
| XSLTProcessor::registerPHPFunctions | Invalid callback names now throws a ValueError. Passing a non-callable entry now throws a TypeError.
| XSLTProcessor::registerPHPFunctions | It is now possible to use callables for callbacks when using functions with array entries.
| XSLTProcessor::setParameter | Now throws a ValueError if any of the arguments contain null bytes instead of silently truncating.
| XSLTProcessor::setParameter | It is now possible to set a parameter value containing both single and double quotes. Prior to PHP 8.4.0, this resulted in a warning.
| XSLTProcessor::transformToDoc | Now throws an Error if the callback cannot be invoked, instead of emitting a warning.
| XSLTProcessor::transformToDoc | Added support for Dom\Document.
| XSLTProcessor::transformToUri | Now throws an Error if the callback cannot be invoked, instead of emitting a warning.
| XSLTProcessor::transformToUri | Added support for Dom\Document.
| XSLTProcessor::transformToXml | Now throws an Error if the callback cannot be invoked, instead of emitting a warning.
| XSLTProcessor::transformToXml | Added support for Dom\Document.
8.3.0 | DateInterval::__construct | Now throws DateMalformedIntervalStringException instead of Exception.
| DateInterval::createFromDateString | DateInterval::createFromDateString now throws DateMalformedIntervalStringException if an invalid string is passed. Previously, it returned false, and a warning was emitted. date_interval_create_from_date_string has not been changed.
| DatePeriod::__construct | Now throws DateMalformedPeriodStringException instead of Exception.
| DateTime::__construct | 传递无效的字符串现在抛出 DateMalformedStringException 而不是 Exception。
| DateTimeInterface::getTimestamp | 超出范围的异常现在是 DateRangeError。
| DateTime::modify | 如果传递了无效的字符串，DateTime::modify 现在将抛出 DateMalformedStringException 。之前返回 false 并且发出警告。date_modify 尚未更改。
| DateTime::sub | 当尝试执行不受支持的操作时，DateTime::sub 现在会抛出 DateInvalidOperationException，而不是警告。date_sub 尚未更改。
| DateTimeImmutable::__construct | Now throws DateMalformedStringException if an invalid string is passed, instead of Exception.
| DateTimeImmutable::modify | DateTimeImmutable::modify now throws DateMalformedStringException if an invalid string is passed. Previously, it returned false, and a warning was emitted.
| DateTimeImmutable::sub | Now throws a DateInvalidOperationException instead of a warning when an unsupported operation is attempted.
| DateTimeZone::__construct | 无效值现在返回 DateInvalidTimeZoneException 而不是生成 Exception。
| DOMCharacterData::after | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMCharacterData::after | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMCharacterData::appendData | This function now has a tentative true return type.
| DOMCharacterData::before | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMCharacterData::replaceWith | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMChildNode::after | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMChildNode::after | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMChildNode::before | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMChildNode::replaceWith | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocument::append | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocument::createAttributeNS | Calling this method without specifying a prefix will now choose a prefix instead of assuming the default namespace. Previously this would create an attribute without a prefix and incorrectly apply the namespace to the owner element because default namespaces don't apply on attributes.
| DOMDocument::createAttributeNS | Calling this method using a prefix that was already declared on the owner element with a different namespace URI will now change the new prefix to avoid creating namespace conflicts. This aligns the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_NAMESPACE_ERR.
| DOMDocument::load | This function now has a tentative bool return type.
| DOMDocument::loadHTML | This function now has a tentative bool return type.
| DOMDocument::loadHTMLFile | This function now has a tentative bool return type.
| DOMDocument::loadXML | This function now has a tentative bool return type.
| DOMDocument::prepend | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocument::replaceChildren | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocument::saveXML | LIBXML_NOXMLDECL is now supported.
| DOMDocumentFragment::append | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocumentFragment::prepend | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMDocumentFragment::replaceChildren | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::after | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::after | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::append | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::before | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::prepend | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::replaceChildren | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMElement::replaceWith | Calling this method on a node without a parent is now a no-op to align the behaviour with the DOM specification. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMParentNode::append | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMParentNode::prepend | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| DOMParentNode::replaceChildren | Calling this method on a node without an owner document now works. Previously this threw a DOMException with code DOM_HIERARCHY_REQUEST_ERR.
| FFI::cast | Calling FFI::cast statically is now deprecated.
| FFI::cdef | C functions returning void return a PHP null instead of FFI\CType::TYPE_VOID.
| FFI::load | FFI::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::new | Calling FFI::new statically is now deprecated.
| FFI::type | Calling FFI::type statically is now deprecated.
| array_pad | 在 8.3 版本之前，一次只能添加 1048576 个元素。 现在，它只受数组最大大小的限制。
| array_product | 当 array 值不能转换为 int 或 float 时，现在会发出 E_WARNING。之前会忽略 array 和 object，而其它的值会转换为 int。此外，现在也会转换定义了数字转换的对象（比如 GMP）而不是忽略它。
| array_sum | 当 array 值不能转换为 int 或 float 时，现在会发出 E_WARNING。之前会忽略 array 和 object，而其它的值会转换为 int。此外，现在也会转换定义了数字转换的对象（比如 GMP）而不是忽略它。
| assert | 弃用所有的 assert. INI 设置。
| assert_options | assert_option 现在已弃用。
| class_alias | class_alias 现在支持创建内部类的别名。
| curl_getinfo | 引入 CURLINFO_CAINFO 和 CURLINFO_CAPATH。
| dba_fetch | 废弃了使用 dba 作为第三个参数调用 dba_fetch 的方法。
| easter_date | 在 64 位系统上，year 参数现在接受范围在 1970 到 2,000,000,000 的值。
| fgetcsv | 如果最后一个字段仅包含未终止的 enclosure，则返回空字符串，而不是带有单个 NULL 字节的字符串。
| file | flags 包含任意无效值会抛出 ValueError。
| gc_status | gc_status 现在会返回以下附加字段： "running"、"protected"、 "full"、"buffer_size"、 "application_time"、"collector_time"、 "destructor_time" 和 "free_time"。
| get_class | 不带参数调用 get_class 现在会发出 E_DEPRECATED warning；之前，在类内部调用此函数会返回该类的名称。
| get_parent_class | 不带参数调用 get_parent_class 现在会发出 E_DEPRECATED warning；之前，在类内部调用此函数会返回该类的名称。
| highlight_file | 由此产生的 HTML 有所改变。
| highlight_string | 由此产生的 HTML 有所改变。
| imagerotate | 未使用的 ignore_transparent 已完全删除。
| ldap_connect | Calling ldap_connect with separate hostname and port is now deprecated.
| mb_convert_case | 为希腊字母 Sigma 实现了条件性大小写规则， 仅适用于 MB_CASE_LOWER 和 MB_CASE_TITLE 模式， 不适用于 MB_CASE_LOWER_SIMPLE 和 MB_CASE_TITLE_SIMPLE。
| mb_decode_mimeheader | 根据 RFC 2047 规范，将下划线转换为空格。
| mb_encode_mimeheader | 使用 Quoted-Printable 编码时，不再丢弃 NUL（0）字节， 而是编码为 =00。
| mb_strimwidth | 将负的 width 传递给 mb_strimwidth 现已废弃。
| mb_strtolower | 为希腊字母 sigma 实现了条件性大小写规则。
| mt_srand | seed 现在可为 null。
| number_format | 新增对 decimals 负值的处理。
| odbc_autocommit | enable is now nullable.
| openssl_pkey_new | 新增使用自定义 EC 参数生成 EC 秘钥的支持。特别是引入了 EC 选项：p、a、b、seed、generator、g_x、g_y、cofactor 和 order。
| password_hash | 当由于盐值生成失败而抛出 ValueError 时， password_hash 现在会将底层的 Random\RandomException 作为 Exception::$previous 异常。
| pg_convert | 当字段的值或类型不能正确匹配 PostgreSQL 的类型时，现在会抛出 ValueError 或 TypeError 错误；之前触发 E_WARNING。
| pg_fetch_object | 当 constructor_args 非空而类没有构造方法时，现在会抛出 ValueError 异常；之前抛出 Exception。
| pg_fetch_result | row 现在可为 null。
| pg_field_is_null | row 现在可为 null。
| pg_field_prtlen | row 现在可为 null。
| pg_insert | 当指定的表无效时，现在会抛出 ValueError 错误；之前触发 E_WARNING。
| pg_insert | 当字段的值或类型不能正确匹配 PostgreSQL 的类型时，现在会抛出 ValueError 或 TypeError 错误；之前触发 E_WARNING。
| pg_trace | 新增 trace_mode。
| posix_eaccess | Checks the effective user/group for a file, differing from posix_access which checks from the real user/group.
| posix_getrlimit | The optional resource parameter has been added.
| posix_isatty | Type error E_WARNINGs are now raised for integer coercions following the usual PHP type coercion semantics.
| posix_ttyname | Type error E_WARNINGs are now raised for integer coercions following the usual PHP type coercion semantics.
| posix_ttyname | On invalid file_descriptor integer values an E_WARNING is now raised.
| proc_get_status | 返回的数组中添加了"cached" 条目。PHP 8.3.0 之前，只有第一次调用才会返回真正的 exit 代码。"cached" 条目表示已缓存 exit 代码。
| proc_open | 如果 command 是没有元素的空数组，将会抛出 ValueError。
| range | 如果 start 和 end 都是字符串，然后 range 现在将始终生成字节 array。之前如果其中一个边界值是数字字符串，然后另外一个边界值也会默默转换为 int。
| range | 如果 start 或 end 是字符串，并且由于另一个边界值是数字而默默转换为 int，现在将发出 E_WARNING。
| range | 如果 start 或 end 是多于一个字节的非数字字符串，现在将发出 E_WARNING。
| range | 如果 start 或 end 是空字符串，现在将发出 E_WARNING。
| range | 如果 step 是不带小数部分的 float，将解释为 int。
| range | 如果 step 是负数，当生成的范围是递增时，现在将抛出 ValueError。
| range | 如果 step 不是有限数值（finite），现在将抛出 ValueError。
| range | 如果 start 或 end 是 array、object 或 resource，现在将会抛出 TypeError。之前会默默地转换为 int。
| srand | seed 现在可为 null。
| str_getcsv | 如果最后一个字段仅包含未终止的 enclosure，则返回空字符串，而不是带有单个 NULL 字节的字符串。
| stream_notification_callback | Support for STREAM_NOTIFY_COMPLETED implemented, earlier PHP versions would never trigger this notification.
| strrchr | 新增 before_needle 参数。
| strtok | 现在，当未提供 token 时，会抛出 E_WARNING。
| unserialize | 当输入字符串有未使用的数据时，现在会发出 E_WARNING。
| unserialize | 当传递的字符串有未消耗的数据时，现在会发出 E_WARNING。
| unserialize | 当传递的字符串不可序列化时，现在抛出 E_WARNING； 之前是抛出 E_NOTICE。
| IntlBreakIterator::setText | This method now returns false on failure; previously it returns null.
| IntlChar::enumCharNames | This method now returns false on failure; previously it returns null.
| IntlDateFormatter::setTimeZone | This function now returns true on success; previously it returns null.
| mysqli_result::fetch_object | Now throws a ValueError exception when the constructor_args is non-empty with the class not having constructor; previously an Exception was thrown.
| mysqli::poll | 现在，当没有传递 read 和 error 参数时抛出 ValueError 异常。
| Phar::setStub | Calling Phar::setStub with a resource and a length is now deprecated. Such calls should be replaced by: $phar->setStub(stream_get_contents($resource));
| ReflectionClass::getStaticProperties | ReflectionClass::getStaticProperties 的返回类型已经从 array 更改为 ?array。
| ReflectionProperty::setValue | Calling this method with a single argument is deprecated, instead use ReflectionProperty::setValue(null, $value) for static properties.
| SQLite3::enableExceptions | Calling SQLite3::enableExceptions with enable as false will trigger a E_DEPRECATED warning.
| ZipArchive::addFile | ZipArchive::FL_OPEN_FILE_NOW was added.
| ZipArchive::addFile | ZipArchive::LENGTH_TO_END and ZipArchive::LENGTH_UNCHECKED were added.
| ZipArchive::addGlob | ZipArchive::FL_OPEN_FILE_NOW was added.
| ZipArchive::replaceFile | ZipArchive::FL_OPEN_FILE_NOW was added.
| ZipArchive::replaceFile | ZipArchive::LENGTH_TO_END and ZipArchive::LENGTH_UNCHECKED were added.
8.2.9 | DateTimeImmutable::createFromFormat | The (space) specifier now also supports NBSP (U+A0) and NNBSP (U+202F) characters.
8.2.1 | SplFileObject::__toString | Changed from an alias of SplFileObject::fgets to an implementation of SplFileObject::current which returns a CSV string when the SplFileObject::READ_CSV flag is set.
8.2.0 | ArrayIterator::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 | Only the y to f, invert, and days will be visible, including a new from_string boolean property.
| DateInterval::createFromDateString | Only the from_string and date_string properties will be visible when a DateInterval is created with this method.
| DatePeriod::__construct | The DatePeriod::INCLUDE_END_DATE constant has been added.
| DateTimeInterface::format | 新增 X 和 x 格式化字符。
| DateTimeImmutable::createFromFormat | The X and x format specifiers have been added.
| DateTimeImmutable::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| DateTimeImmutable::getLastErrors | Before PHP 8.2.0, this function did not return false when there were no warnings or errors. Instead, it would always return the documented array structure.
| FilesystemIterator::__construct | Prior to PHP 8.2.0, FilesystemIterator::SKIP_DOTS was always set and could not be removed.
| array_walk | 现在返回类型为 true；之前是 bool。
| array_walk_recursive | 现在返回类型为 true；之前是 bool。
| arsort | 现在返回类型为 true；之前是 bool。
| asort | 现在返回类型为 true；之前是 bool。
| curl_getinfo | 引入 CURLINFO_PROXY_ERROR、CURLINFO_REFERER、CURLINFO_RETRY_AFTER。
| curl_multi_setopt | 引入 CURLMOPT_MAX_CONCURRENT_STREAMS。
| date_parse_from_format | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| dba_fetch | dba_fetch 的可选参数 skip 现在在最后， 与 PHP 用户空间语义一致。以前的重载签名仍然被接受，但不推荐使用。
| dba_open | flags 参数被添加。
| dba_open | handler 现在可以为 null。
| dba_popen | flags 参数被添加。
| dba_popen | handler 现在可以为 null。
| getimagesize | 现在将正确返回 AVIF 图像的实际尺寸、bits 和 channels；以前，尺寸报告为 0x0，并且不会报告 bits 和 channels。
| idate | 添加 N（ISO-8601 格式的周几）和 o（ISO-8601 格式的年份）格式字符。
| iterator_count | iterator 的类型从 Traversable 扩展为 Traversablearray。
| iterator_to_array | iterator 的类型从 Traversable 扩展为 Traversablearray。
| krsort | 现在返回类型为 true；之前是 bool。
| krsort | 此函数现在在 SORT_REGULAR 下使用标准 PHP 8 规则进行数字字符串比较。
| ksort | 现在返回类型为 true；之前是 bool。
| ksort | 此函数现在在 SORT_REGULAR 下使用标准 PHP 8 规则进行数字字符串比较。
| lcfirst | 大小写转换不在依赖于使用 setlocale 设置的区域。只会转换 ASCII 字符。
| mb_convert_encoding | mb_convert_encoding 将不再返回以下非文本编码："Base64"、"QPrint"、"UUencode"、"HTML entities"、"7 bit" 和 "8 bit"。
| mb_convert_kana | A ValueError is now thrown if the combination of different modes is invalid.
| mb_detect_encoding | mb_detect_encoding 将不再返回以下非文本编码："Base64"、"QPrint"、"UUencode"、"HTML entities"、"7 bit" 和 "8 bit"。
| natcasesort | 现在返回类型为 true；之前是 bool。
| natsort | 现在返回类型为 true；之前是 bool。
| openlog | The function now always returns true. Previously it returned false on failure.
| pg_close | 现在返回类型为 true；之前是 bool。
| pg_untrace | 现在返回类型为 true；之前是 bool。
| random_bytes | In case of a CSPRNG failure, this function will now throw a Random\RandomException. Previously a plain Exception was thrown.
| random_int | CSPRNG 失败时，此函数现在将抛出 Random\RandomException。之前抛出普通的 Exception。
| rsort | 现在返回类型为 true；之前是 bool。
| setcookie | Cookie 的日期格式现在为 '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_split | 如果 string 为空，现在返回空 array。之前返回的 array 包含单个空字符串。
| strcasecmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strcmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| stripos | 大小写转换不在依赖于使用 setlocale 设置的区域。只会进行 ASCII 大小写转换。非 ASCII 字节值将通过它们的字节值进行比较。
| stristr | 大小写转换不在依赖于使用 setlocale 设置的区域。只会进行 ASCII 大小写转换。非 ASCII 字节值将通过它们的字节值进行比较。
| strnatcasecmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strnatcmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strncasecmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strncmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strripos | 大小写转换不在依赖于使用 setlocale 设置的区域。只会进行 ASCII 大小写转换。非 ASCII 字节值将通过它们的字节值进行比较。
| strtolower | 大小写转换不在依赖于使用 setlocale 设置的区域。只会转换 ASCII 字符。
| strtoupper | 大小写转换不在依赖于使用 setlocale 设置的区域。只会转换 ASCII 字符。
| substr_compare | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -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.14 | SplFileObject::__toString | Changed from an alias of SplFileObject::fgets to an implementation of SplFileObject::current which returns a CSV string when the SplFileObject::READ_CSV flag is set.
8.1.8 | DateTimeImmutable::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| date_parse_from_format | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
8.1.0 | DateTime::setTime | The behaviour with double existing hours (during the fall-back DST transition) changed. Previously PHP would pick the second occurrence (after the DST transition), instead of the first occurrence (before DST transition).
| DateTimeImmutable::setTime | The behaviour with double existing hours (during the fall-back DST transition) changed. Previously PHP would pick the second occurrence (after the DST transition), instead of the first occurrence (before DST transition).
| DateTimeZone::getTransitions | The default value of timestampEnd has been changed to 2147483647. Previously, it was PHP_INT_MAX.
| DirectoryIterator::key | When the iterator is uninitialized, an Error is thrown now. Previously, the method returned false.
| DOMDocument::createComment | In case of an error, a DomException is thrown now. Previously, false was returned.
| DOMDocument::createDocumentFragment | In case of an error, a DomException is thrown now. Previously, false was returned.
| DOMDocument::createTextNode | In case of an error, a DomException is thrown now. Previously, false was returned.
| current | 弃用在 object 上调用此函数。 要么首先使用 get_mangled_object_vars 将 object 转换为 array，要么使用实现 Iterator 的类提供的方法，例如 ArrayIterator。
| date_sunrise | 此函数已弃用，请改用 date_sun_info。
| date_sunset | 此函数已弃用，请改用 date_sun_info。
| define | value 现在可以是一个对象。
| end | 弃用在 object 上调用此函数。 要么首先使用 get_mangled_object_vars 将 object 转换为 array，要么使用实现 Iterator 的类提供的方法，例如 ArrayIterator。
| exif_imagetype | 新增 AVIF 支持。
| finfo_buffer | finfo 参数现在接受 finfo 实例，之前接受 resource。
| finfo_close | 此函数现在是 NOP（空操作）。
| finfo_close | finfo 参数现在接受 finfo 实例，之前接受 resource。
| finfo_file | finfo 参数现在接受 finfo 实例，之前接受 resource。
| finfo_open | 现在返回 finfo 实例，之前返回 resource。
| finfo_set_flags | finfo 参数现在接受 finfo 实例，之前接受 resource。
| fputcsv | 新增可选的 eol 参数。
| ftp_alloc | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_append | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_cdup | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_chdir | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_chmod | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_close | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_connect | 现在返回 FTP\Connection 实例；之前返回 resource。
| ftp_delete | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_exec | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_fget | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_fput | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_get | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_get_option | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_login | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_mdtm | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_mkdir | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_mlsd | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_nb_continue | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_nb_fget | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_nb_fput | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_nb_get | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_nb_put | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_nlist | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_pasv | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_put | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_pwd | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_raw | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_rawlist | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_rename | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_rmdir | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_set_option | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_site | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_size | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| ftp_ssl_connect | 现在返回 FTP\Connection 实例；之前返回 resource。
| ftp_systype | 现在 ftp 参数接受 FTP\Connection 实例，之前接受 resource。
| get_html_translation_table | flags 从 ENT_COMPAT 更改为 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
| gmp_init | Support for explicit octal prefixes 0o and 0O has been added for num strings. Interpretation of such prefixes when base is 0 has also been added.
| hash | 新增 options 参数。
| hash_algos | 新增对 MurmurHash3 和 xxHash 算法的支持。
| hash_file | 新增 options 参数。
| hash_init | 新增 options 参数。
| html_entity_decode | flags changed from ENT_COMPAT to ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
| htmlentities | flags 从 ENT_COMPAT 变更为 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
| htmlspecialchars | flags 从 ENT_COMPAT 变更为 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
| htmlspecialchars_decode | flags 从 ENT_COMPAT 变更为ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
| imagechar | font 参数现在接受 GdFont 实例和 int，之前仅接受 int。
| imagecharup | font 参数现在接受 GdFont 实例和 int，之前仅接受 int。
| imagefilledpolygon | 弃用参数 num_points。
| imagefontheight | font 参数现在接受 GdFont 实例和 int，之前仅接受 int。
| imagefontwidth | font 参数现在接受 GdFont 实例和 int，之前仅接受 int。
| imageloadfont | 现在返回 GdFont 实例；之前返回 int。
| imageopenpolygon | The parameter num_points has been deprecated.
| imagepolygon | 弃用参数 num_points。
| imagestring | font 参数现在接受 GdFont 实例和 int，之前仅接受 int。
| imagestringup | font 参数现在接受 GdFont 实例和 int，之前仅接受 int。
| imagetypes | 新增 IMG_AVIF。
| ini_set | value 现在接受任何标量类型（包含 null），之前仅接受 string 值。
| key | 弃用在 object 上调用此函数。 要么首先使用 get_mangled_object_vars 将 object 转换为 array，要么使用实现 Iterator 的类提供的方法，例如 ArrayIterator。
| ldap_add | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_add_ext | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_add_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_bind | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_bind_ext | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_bind_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_compare | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_connect | Returns an LDAP\Connection instance now; previously, a resource was returned.
| ldap_count_entries | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_count_entries | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_count_references | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_count_references | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_delete | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_delete_ext | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_delete_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_errno | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_error | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_exop | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_exop_passwd | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_exop_refresh | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_exop_whoami | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_first_attribute | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_first_attribute | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_first_entry | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_first_entry | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_first_entry | Returns an LDAP\ResultEntry instance now; previously, a resource was returned.
| ldap_free_result | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_get_attributes | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_get_attributes | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_get_dn | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_get_dn | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_get_entries | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_get_entries | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_get_option | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_get_values | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_get_values | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_get_values_len | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_get_values_len | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_list | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_list | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_mod_add | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_mod_del | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_mod_replace | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_modify_batch | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_mod_add_ext | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_mod_add_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_mod_del_ext | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_mod_del_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_mod_replace_ext | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_mod_replace_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_next_attribute | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_next_attribute | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_next_entry | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_next_entry | The entry parameter expects an LDAP\ResultEntry instance now; previously, a valid ldap result entry resource was expected.
| ldap_next_entry | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_parse_exop | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_parse_exop | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_parse_result | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_parse_result | The result parameter expects an LDAP\Result instance now; previously, a valid ldap result resource was expected.
| ldap_read | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_read | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_rename | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_rename_ext | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_rename_ext | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_sasl_bind | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_search | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_search | Returns an LDAP\Result instance now; previously, a resource was returned.
| ldap_set_option | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_set_rebind_proc | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| ldap_unbind | 现在 ldap 参数接受 LDAP\Connection 实例，之前接受有效的 ldap link resource。
| mb_check_encoding | 弃用使用 null 作为 value 或不带参数调用此函数。
| mhash | This function has been deprecated. Use the hash_*() functions instead.
| mhash_count | This function has been deprecated. Use the hash_*() functions instead.
| mhash_get_block_size | This function has been deprecated. Use the hash_*() functions instead.
| mhash_get_hash_name | This function has been deprecated. Use the hash_*() functions instead.
| mhash_keygen_s2k | This function has been deprecated. Use the hash_*() functions instead.
| next | 弃用在 object 上调用此函数。 要么首先使用 get_mangled_object_vars 将 object 转换为 array，要么使用实现 Iterator 的类提供的方法，例如 ArrayIterator。
| odbc_result_all | This function has been deprecated.
| openssl_cms_encrypt | The default cipher algorithm (cipher_algo) is now AES-128-CBC (OPENSSL_CIPHER_AES_128_CBC). Previously, PKCS7/CMS was used (OPENSSL_CIPHER_RC2_40).
| openssl_decrypt | tag 现在可为 null。
| openssl_pkcs7_encrypt | 默认密码算法（cipher_algo）现在是 AES-128-CBC（OPENSSL_CIPHER_AES_128_CBC）。以前，使用 PKCS7/CMS (OPENSSL_CIPHER_RC2_40)。
| pg_affected_rows | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_cancel_query | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_client_encoding | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_close | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_connect | 现在返回 PgSql\Connection 实例；之前返回 resource。
| pg_connect_poll | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_connection_busy | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_connection_reset | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_connection_status | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_consume_input | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_convert | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_copy_from | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_copy_to | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_dbname | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_delete | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_end_copy | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_escape_bytea | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_escape_identifier | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_escape_literal | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_escape_string | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_execute | 现在返回 PgSql\Result 实例，之前返回 resource
| pg_execute | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_fetch_all | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_fetch_all_columns | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_fetch_array | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_fetch_assoc | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_fetch_object | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_fetch_result | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_fetch_row | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_field_is_null | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_field_name | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_field_num | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_field_prtlen | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_field_size | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_field_table | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_field_type | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_field_type_oid | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_flush | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_free_result | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_get_notify | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_get_pid | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_get_result | 现在返回 PgSql\Result 实例，之前返回 resource
| pg_get_result | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_host | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_insert | 现在返回 PgSql\Result 实例，之前返回 resource
| pg_insert | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_last_error | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_last_notice | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_last_oid | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_lo_close | 现在 lob 接受 PgSql\Lob 实例，之前接受 resource。
| pg_lo_create | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_lo_export | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_lo_import | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_lo_open | 现在返回 PgSql\Lob 实例；之前返回 resource。
| pg_lo_open | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_lo_read | 现在 lob 接受 PgSql\Lob 实例，之前接受 resource。
| pg_lo_read_all | 现在 lob 接受 PgSql\Lob 实例，之前接受 resource。
| pg_lo_seek | 现在 lob 接受 PgSql\Lob 实例，之前接受 resource。
| pg_lo_tell | 现在 lob 接受 PgSql\Lob 实例，之前接受 resource。
| pg_lo_truncate | 现在 lob 接受 PgSql\Lob 实例，之前接受 resource。
| pg_lo_unlink | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_lo_write | 现在 lob 接受 PgSql\Lob 实例，之前接受 resource。
| pg_meta_data | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_num_fields | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_num_rows | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_options | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_parameter_status | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_pconnect | 现在返回 PgSql\Connection 实例；之前返回 resource。
| pg_ping | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_port | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_prepare | 现在返回 PgSql\Result 实例，之前返回 resource
| pg_prepare | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_put_line | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_query | 现在返回 PgSql\Result 实例，之前返回 resource
| pg_query | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_query_params | 现在返回 PgSql\Result 实例，之前返回 resource
| pg_query_params | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_result_error | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_result_error_field | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_result_seek | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_result_status | 现在 result 参数接受 PgSql\Result 实例，之前接受 resource。
| pg_select | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_send_execute | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_send_prepare | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_send_query | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_send_query_params | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_set_client_encoding | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_set_error_verbosity | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_socket | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_trace | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_transaction_status | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_tty | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_untrace | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_update | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| pg_version | 现在 connection 参数接受 PgSql\Connection 实例，之前接受 resource。
| prev | 弃用在 object 上调用此函数。 要么首先使用 get_mangled_object_vars 将 object 转换为 array，要么使用实现 Iterator 的类提供的方法，例如 ArrayIterator。
| reset | 弃用在 object 上调用此函数。 要么首先使用 get_mangled_object_vars 将 object 转换为 array，要么使用实现 Iterator 的类提供的方法，例如 ArrayIterator。
| snmp3_get | The auth_protocol now accepts "SHA256" and "SHA512" when supported by libnetsnmp.
| snmp3_getnext | The auth_protocol now accepts "SHA256" and "SHA512" when supported by libnetsnmp.
| snmp3_real_walk | The auth_protocol now accepts "SHA256" and "SHA512" when supported by libnetsnmp.
| snmp3_walk | The auth_protocol now accepts "SHA256" and "SHA512" when supported by libnetsnmp.
| stream_select | microseconds is now nullable.
| strptime | 此函数已弃用。改用 date_parse_from_format（用于单独区域设置解析）或者 IntlDateFormatter::parse（用于依赖区域设置解析）
| IntlDateFormatter::create | Parameters dateType and timeType are now optional.
| MultipleIterator::current | A RuntimeException is now thrown if MultipleIterator::current is called on an invalid iterator. Previously, false was returned.
| MultipleIterator::key | A RuntimeException is now thrown if MultipleIterator::key is called on an invalid iterator. Previously, false was returned.
| mysqli_driver::$report_mode | The default value is now MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT. Previously, it was MYSQLI_REPORT_OFF.
| mysqli_result::fetch_all | Now also available when linking against libmysqlclient.
| mysqli_stmt::execute | The optional params parameter has been added.
| mysqli_stmt::next_result | Now also available when linking against libmysqlclient.
| mysqli::__construct | mysqli::connect now returns true instead of null on success.
| mysqli::$client_info | 弃用使用 mysql 参数调用 mysqli_get_client_info。此函数从不需要参数，但错误的允许其作为可选参数。
| mysqli::$client_info | 弃用面向对象风格的 mysqli::get_client_info。
| mysqli::init | 弃用面向对象风格的 mysqli::init 方法。用 parent::__construct 替换对 parent::init 的调用。
| Phar::buildFromDirectory | Phar::buildFromDirectory no longer returns false.
| Phar::buildFromIterator | Phar::buildFromIterator no longer returns false.
| PharData::buildFromDirectory | PharData::buildFromDirectory no longer returns false.
| PharData::buildFromIterator | PharData::buildFromIterator no longer returns false.
| ReflectionFunctionAbstract::isStatic | 此方法已提升。之前仅定义于 ReflectionMethod。
| ReflectionClassConstant::getName | Throws an Error in case the name property has not been initialized. Previously, the method returned false on failure.
| ReflectionExtension::__clone | 此函数不再是 final。
| ReflectionFunctionAbstract::__clone | 此函数不再是 final。
| ReflectionParameter::__clone | This method is no longer final.
| ReflectionProperty::__clone | This method is no longer final.
| ReflectionProperty::getValue | Private and protected properties can be accessed by ReflectionProperty::getValue right away. Previously, they needed to be made accessible by calling ReflectionProperty::setAccessible; otherwise a ReflectionException was thrown.
| ReflectionProperty::setAccessible | Calling this method has no effect; all properties are accessible by default.
| ReflectionProperty::setValue | Private and protected properties can be accessed by ReflectionProperty::setValue right away. Previously, they needed to be made accessible by calling ReflectionProperty::setAccessible; otherwise a ReflectionException was thrown.
| ReflectionZendExtension::__clone | This method is no longer final.
| SimpleXMLElement::current | An Error is now thrown if SimpleXMLElement::current is called on an invalid iterator. Previously, null was returned.
| SimpleXMLElement::key | An Error is now thrown if SimpleXMLElement::key is called on an invalid iterator. Previously, false was returned.
| SplFileObject::fputcsv | The optional eol parameter has been added.
| SplObjectStorage::current | SplObjectStorage::current now throws an Error exception if the current position is invalid. Previously, false was returned instead.
| SQLite3Result::finalize | This method now throws an Error exception if the object is not correct initialized. Previously, it returned false.
| SQLite3Stmt::close | This method now throws an Error exception if the object is not correct initialized. Previously, it returned false.
8.0.21 | DateTimeImmutable::createFromFormat | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
| date_parse_from_format | Now throws ValueError when NULL-bytes are passed into datetime, which previously was silently ignored.
8.0.21、8.1.8、8.2.0 | DateTime::createFromFormat | 现在，当将 NULL 字节传递到 datetime 时，会引发 ValueError，而之前会默默忽略该错误。
8.0.5 | imageinterlace | imageinterlace 现在返回 bool；之前返回 int（非零为隔行扫描图像，否则为 0）
8.0.3 | DOMDocument::getElementsByTagNameNS | namespace is nullable now.
| DOMElement::getElementsByTagNameNS | namespace is nullable now.
| DOMImplementation::createDocument | namespace is now nullable.
| finfo::__construct | magic_database is nullable now.
| bind_textdomain_codeset | codeset is nullable now. Previously, it was not possible to retrieve the currently set encoding.
| bindtextdomain | directory is nullable now. Previously, it was not possible to retrieve the currently set directory.
| finfo_open | magic_database 现在可以为 null。
| imagegd | file 现在可以为 null。
| imagegd2 | file 现在可以为 null。
| SoapClient::__setLocation | location is nullable now.
| SoapVar::__construct | typeName, typeNamespace, nodeName,and nodeNamespace are nullable now.
8.0.0 | CURLFile::__construct | mime_type 和 posted_filename 现在可以为 null；之前它们的默认值是 0。
| DateInterval::__construct | W can be combined with D.
| DateTime::createFromImmutable | The method returns an instance of the currently invoked class now. Previously, it created a new instance of DateTime.
| DateTimeInterface::format | 新增 p 格式化字符。
| DateTimeInterface::getTimestamp | 这些函数在失败时不再返回 false。
| DateTimeImmutable::createFromMutable | The method returns an instance of the currently invoked class now. Previously, it created a new instance of DateTimeImmutable.
| DateTimeZone::listIdentifiers | 在此版本之前，失败时返回 false。
| Directory::close | 不接受任何参数。在此之前，目录句柄可以作为参数传递。
| Directory::read | 不接受任何参数。在此之前，目录句柄可以作为参数传递。
| Directory::rewind | 不接受任何参数。在此之前，目录句柄可以作为参数传递。
| DirectoryIterator::__construct | Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.
| DOMDocument::load | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMDocument::loadHTML | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMDocument::loadHTMLFile | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMDocument::loadXML | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMImplementation::createDocument | doctype is now nullable.
| DOMImplementation::createDocument | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMImplementation::createDocumentType | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| DOMImplementation::hasFeature | Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.
| FFI::cdef | lib is nullable now.
| FFI::string | size is nullable now; previously, its default was 0.
| FilesystemIterator::__construct | Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.
| abs | num 不再接受支持数字转换的内部对象。
| apache_note | 现在 note_value 可为 null。
| array_chunk | 如果 length 小于 1，现在会抛出 ValueError；之前会引发 E_WARNING 级别的错误且函数会返回 null。
| array_column | index_key 参数指定的列中的对象不再强制转换为字符串，而是会抛出 TypeError。
| array_combine | 如果每个数组的元素数量不相等，现在 array_combine 将会抛出 ValueError，之前此方法返回 false。
| array_diff | 现在可以仅使用一个参数调用此函数。以前，至少需要两个参数。
| array_diff_assoc | 现在可以仅使用一个参数调用此函数。以前，至少需要两个参数。
| array_diff_key | 现在可以仅使用一个参数调用此函数。以前，至少需要两个参数。
| array_fill | 如果 array_fill 的 count 超出范围现在将会抛出 ValueError， 之前会引发 E_WARNING 且函数返回 false。
| array_filter | callback 现在可为空（nullable）。
| array_filter | 如果 callback 接受引用传递参数，该方法将会抛出 E_WARNING。
| array_intersect | 现在可以仅使用一个参数调用此函数。以前，至少需要两个参数。
| array_intersect_assoc | 现在可以仅使用一个参数调用此函数。以前，至少需要两个参数。
| array_intersect_key | 现在可以仅使用一个参数调用此函数。以前，至少需要两个参数。
| array_key_exists | key 参数现在接受 bool、float、int、null、resource 和 string 作为参数。
| array_key_exists | 不再支持将 object 传递给 array 参数。
| array_map | 如果 callback 接受引用传递参数，该方法将会抛出 E_WARNING。
| array_rand | 如果 num 超出范围，array_rand 现在会抛出一个 ValueError； 之前会抛出一个 E_WARNING，并返回 null。
| array_rand | 如果 array 为空，array_rand 现在会抛出一个 ValueError； 之前会抛出一个 E_WARNING，并返回 null。
| array_reduce | 如果 callback 接受引用传递参数，该方法将会抛出 E_WARNING。
| array_splice | length 现在可为空（nullable）。
| array_walk | 如果 callback 期待通过引用传递第二个和第三个参数， 此函数现在将抛出 E_WARNING。
| assert | assert 将不再对字符串参数求值，而是跟其他参数一样对待。应该使用 assert($a == $b) 替代 assert('$a == $b')。已移除 assert.quiet_eval php.ini 指令和 ASSERT_QUIET_EVAL 常量，因为它们不再有任何作用。
| assert | 如果 description 是 Throwable 的实例，无论 assert.exception 的值如何，如果断言失败，该对象都会被抛出。
| assert | 如果 description 是 Throwable 的实例，即使设置了用户回调，也不会调用该回调。
| assert | 不再允许在命名空间中声明叫做 assert() 的函数，并发出 E_COMPILE_ERROR。
| assert_options | 如果 option 是无效选项，抛出 ValueError。之前返回 false。
| bcadd | 现在 scale 可以为 null。
| bccomp | 现在 scale 可以为 null。
| bcdiv | 现在 scale 可以为 null。
| bcdiv | 现在，除以 0 会引发 DivisionByZeroError 异常，而不是返回 null。
| bcmod | 现在 scale 可以为 null。
| bcmod | 现在，除以 0 会引发 DivisionByZeroError 异常，而不是返回 null。
| bcmul | 现在 scale 可以为 null。
| bcpow | 当 exponent 有小数部分时，现在会抛出 ValueError 而不是截断。
| bcpowmod | scale is now nullable.
| bcpowmod | Now throws a ValueError instead of returning false if exponent is a negative value.
| bcpowmod | Dividing by 0 now throws a DivisionByZeroError exception instead of returning false.
| bcscale | 现在 scale 可以为 null。
| bcsqrt | 如果 num 不是格式良好的 BCMath 数字字符串，或小于 0，则会引发 ValueError 错误。之前，会引发 E_WARNING 错误。
| bcsqrt | 现在，scale 的取值范围必须在 0 到 2147483647 之间；之前，负数的 scale 值会被静默处理为 0。
| bcsqrt | 现在 scale 可以为 null。
| bcsub | 现在 scale 可以为 null。
| bzdecompress | use_less_memory 的类型从 int 变为 bool。 之前默认值为 0。
| bzwrite | length 现在可为空（nullable）。
| call_user_func_array | args 键现在将被解释为参数名称，而不是被默默地忽略。
| ceil | num 不再接受支持数字转换的内部对象。
| closedir | dir_handle 现在可为 null。
| com_event_sink | sink_interface is nullable now.
| com_get_active_object | codepage is nullable now.
| compact | 如果指定字符串引用了未设置的变量，现在会发出 E_WARNING 级别的错误。
| constant | 如果常量未定义，constant 现在会抛出 Error 异常。以前会产生一个 E_WARNING 级别的错误并返回 null。
| convert_cyr_string | 此函数已移除。
| convert_uuencode | 在此版本之前，尝试转换空字符串将返回 false，没有任何特殊原因。
| count | 当 value 参数传入了无效的 countable 类型， count 现在会抛出 TypeError。
| count_chars | 在此版本之前，函数在失败时返回 false。
| crypt | salt不再可选。
| curl_close | 此函数现在是 NOP（空操作）。
| curl_close | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_copy_handle | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_copy_handle | 现在成功时，此函数返回 CurlHandle 实例，之前返回 resource。
| curl_errno | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_error | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_escape | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_exec | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_getinfo | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_getinfo | option 现在可为 null；之前默认值是 0。
| curl_init | 此函数成功时现在返回 CurlHandle 实例；之前返回 resource。
| curl_init | url 现在可为 null。
| curl_multi_add_handle | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_add_handle | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_multi_close | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_errno | 失败时此函数不再返回 false。
| curl_multi_errno | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_exec | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_getcontent | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_multi_info_read | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_init | 成功时，此函数返回 CurlMultiHandle 实例；之前返回 resource。
| curl_multi_remove_handle | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_remove_handle | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_multi_select | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_multi_setopt | multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
| curl_pause | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_reset | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_setopt | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_setopt_array | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_share_close | share_handle expects a CurlShareHandle instance now; previously, a resource was expected.
| curl_share_errno | 失败时函数不再返回 false。
| curl_share_errno | share_handle expects a CurlShareHandle instance now; previously, a resource was expected.
| curl_share_init | 此函数现在返回 CurlShareHandle 实例，之前返回 resource。
| curl_share_setopt | share_handle expects a CurlShareHandle instance now; previously, a resource was expected.
| curl_unescape | handle 现在接受 CurlHandle 实例；之前接受 resource。
| curl_version | 移除可选的 age 参数。
| date | 现在 timestamp 允许为 null。
| date_sunrise | latitude、longitude、zenith 和 utcOffset 现在可为 null。
| date_sunset | latitude, longitude, zenith and utcOffset are nullable now.
| define | 现在传递 true 到 case_insensitive 会发出 E_WARNING。仍然允许传递 false。
| deflate_add | context expects a DeflateContext instance now; previously, a resource was expected.
| deflate_init | On success, this function returns a DeflateContext instance now; previously, a resource was returned.
| dir | context 现在可为空（nullable）。
| dom_import_simplexml | This function no longer returns null on failure.
| easter_date | year 现在可为空（nullable）。
| easter_date | 当 year 超出允许的范围现在抛出 ValueError。之前函数会返回 false 会触发 E_WARNING。
| easter_days | year 现在可为空（nullable）。
| enchant_broker_describe | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_describe | Prior to this version, the function returned false on failure.
| enchant_broker_dict_exists | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_free | This function has been deprecated in favor of unsetting the object.
| enchant_broker_free | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_free_dict | This function has been deprecated in favor of unsetting the object.
| enchant_broker_free_dict | dictionary expects a EnchantDictionary now; previously, a resource was expected.
| enchant_broker_get_dict_path | This function has been deprecated.
| enchant_broker_get_dict_path | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_get_error | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_init | On success, this function returns an EnchantBroker instance now; previously, a resource was returned.
| enchant_broker_list_dicts | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_list_dicts | Prior to this version, the function returned false on failure.
| enchant_broker_request_dict | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_request_dict | On success, this function returns an EnchantDictionary instance now; previously, a resource was returned.
| enchant_broker_request_pwl_dict | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_request_pwl_dict | On success, this function returns an EnchantDictionary instance now; previously, a resource was returned.
| enchant_broker_set_dict_path | This function has been deprecated.
| enchant_broker_set_dict_path | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_broker_set_ordering | broker expects an EnchantBroker instance now; previoulsy, a resource was expected.
| enchant_dict_add | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_add_to_session | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_check | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_describe | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_describe | Prior to this version, the function returned false on failure.
| enchant_dict_get_error | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_is_added | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_quick_check | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_store_replacement | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| enchant_dict_suggest | dictionary expects an EnchantDictionary instance now; previoulsy, a resource was expected.
| error_log | 现在 destination 和 additional_headers 允许为 null。
| error_reporting | error_level 现在可以为空。
| exec | 如果 command 为空或者包含 null 字节，exec 现在将抛出 ValueError。之前会发出 E_WARNING 并返回 false。
| exif_read_data | required_sections 现在可以为空。
| ezmlm_hash | 此函数已移除。
| fgetcsv | 现在 length 允许为 null.
| file_get_contents | 现在 length 允许为 null。
| finfo_buffer | context 现在可以为 null。
| finfo_file | context 现在可以为 null。
| floatval | 对象转换时的错误级别已从 E_NOTICE 更改为 E_WARNING。
| floor | num 不再接受支持数字转换的内部对象。
| fprintf | 此函数失败时不再返回 false。
| fprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| fprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| fprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| fprintf | 当传递的参数少于所需的参数时抛出 ArgumentCountError；以前该函数则会发出 E_WARNING。
| fsockopen | timeout 现在可以为 null。
| fwrite | 现在 length 可以为 null。
| get_called_class | 类外调用此函数现在将触发 Error。 之前触发 E_WARNING 并且函数返回 false。
| get_class | 在类外不带任何参数调用此函数将会抛出 Error。之前会引发 E_WARNING 并且函数会返回 false。
| get_class_methods | object_or_class 参数现在只接受对象或者有效的类名。
| get_defined_functions | exclude_disabled 参数的默认值从 false 更改为 true。然而，由于禁用的函数在编译时已从函数表中移除，因此该参数不会产生任何作用。
| get_headers | associative 从 int 更改为 bool。
| get_magic_quotes_gpc | 此函数已移除。
| get_magic_quotes_runtime | 此函数已移除。
| get_parent_class | object_or_class 参数现在仅接受对象或者有效的类名。
| get_resources | type is nullable now.
| getdate | 现在 timestamp 允许为 null。
| getenv | name 现在可为 null。
| getimagesize | 如果 filename 不存在或无法访问，将抛出一个 ValueError；之前会生成一个 E_WARNING 级别的错误，并且函数返回 false。
| gmdate | 现在 timestamp 允许为 null。
| gmmktime | hour 不再可选。如果需要获取 Unix 时间戳，可以使用 time。
| gmmktime | 现在 minute、second、month、day 和 year 可以为 null。
| gmp_binomial | This function no longer returns false on failure.
| gmp_export | This function no longer returns false on failure.
| gmp_import | This function no longer returns false on failure.
| gmp_random_seed | If seed is invalid, gmp_random_seed now throws a ValueError. Previously it emitted an E_WARNING and returned false.
| gmstrftime | 现在 timestamp 允许为 null。
| grapheme_substr | The function now consistently clamps out-of-bounds offsets to the string boundary. Previously, false was returned instead of the empty string in some cases.
| gzgets | length is nullable now; previously, the default was 1024.
| gzwrite | length is nullable now; previously, the default was 0.
| hash | 如果 algo 未知，现在 hash 将抛出 ValueError 异常，之前返回 false。
| hash_hkdf | Now throws a ValueError exception on error. Previously, false was returned and an E_WARNING message was emitted.
| hash_hmac | 如果 algo 未知或者非加密散列函数，现在将抛出 ValueError 异常；以前返回 false。
| hash_hmac_file | 如果 algo 未知或非加密散列函数，现在抛出 ValueError 异常，之前返回 false。
| hash_init | 如果 algo 未知或非加密散列函数，或者 key 为空时，现在抛出 ValueError 异常。之前返回 false 并发出 E_WARNING 消息。
| hash_pbkdf2 | 现在错误时将抛出 ValueError 异常。之前返回 false 并发出 E_WARNING 消息。
| hash_update_file | stream_context 现在可以为 null。
| header_remove | name 现在允许为 null。
| hebrevc | 此函数已移除。
| html_entity_decode | encoding is nullable now.
| htmlentities | encoding 现在可以为 null。
| http_build_query | arg_separator 现在可为 null。
| iconv_mime_decode | encoding 现在可为 null。
| iconv_mime_decode_headers | encoding 现在可为 null。
| iconv_strlen | encoding 现在可为 null。
| iconv_strpos | encoding is nullable now.
| iconv_strrpos | encoding is nullable now.
| iconv_substr | length 和 encoding 现在可为 null。
| idate | 现在 timestamp 允许为 null。
| ignore_user_abort | enable 现在允许为 null。
| imageaffine | clip 现在允许为 null。
| imageaffine | 成功时此函数现在返回 GDImage 实例；之前返回 resource。
| imagealphablending | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imageantialias | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagearc | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagebmp | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagebmp | The type of compressed is bool now; formerly it was int.
| imagechar | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecharup | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorallocate | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorallocatealpha | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorat | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorclosest | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorclosesthwb | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolordeallocate | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorexact | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorexactalpha | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolormatch | image1 和 image2 现在需要 GdImage 实例，之前需要 resource。
| imagecolorresolve | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorresolvealpha | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorset | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorsforindex | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolorsforindex | 如果 color 超出范围，imagecolorsforindex 现在抛出 ValueError 异常；之前返回 false。
| imagecolorstotal | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolortransparent | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecolortransparent | color 现在允许为 null。
| imageconvolution | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecopy | dst_image 和 src_image 现在需要 GdImage 实例；之前需要 resource。
| imagecopymerge | dst_image 和 src_image 现在需要 GdImage 实例；之前需要 resource。
| imagecopymergegray | dst_image 和 src_image 现在需要 GdImage 实例，之前需要 resource。
| imagecopyresampled | dst_image 和 src_image 现在需要 GdImage 实例，之前需要 resource。
| imagecopyresized | dst_image 和 src_image 现在需要 GdImage 实例，之前需要 resource。
| imagecreate | 成功时，此函数现在返回 GDImage 实例，之前返回 resource。
| imagecreatefrombmp | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromgd | 成功时，此函数现在返回 GDImage 实例，之前返回 resource。
| imagecreatefromgd2 | 成功时，此函数现在返回 GDImage 实例，之前返回 resource。
| imagecreatefromgd2part | 成功时，此函数现在返回 GDImage 实例，之前返回 resource。
| imagecreatefromgif | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecreatefromjpeg | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecreatefrompng | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecreatefromstring | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecreatefromtga | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecreatefromwbmp | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecreatefromwebp | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecreatefromxbm | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecreatefromxpm | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecreatetruecolor | 成功时，此函数现在返回 GDImage 实例；之前返回 resource。
| imagecrop | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecrop | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagecropauto | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagecropauto | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagedashedline | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagedestroy | 此函数现在是 NOP（空操作）。
| imagedestroy | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imageellipse | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagefill | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagefilledarc | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagefilledellipse | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagefilledpolygon | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagefilledrectangle | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagefilltoborder | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagefilter | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imageflip | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagefttext | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagegammacorrect | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagegd | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagegd2 | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagegetclip | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagegetinterpolation | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagegif | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagegrabscreen | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagegrabwindow | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagegrabwindow | client_area expects a bool now; previously it expected an int.
| imageinterlace | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imageinterlace | enable 现在接受 bool；之前接受 int。
| imageistruecolor | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagejpeg | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagelayereffect | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imageline | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imageopenpolygon | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagepalettecopy | dst 和 src 现在接受 GdImage 实例；之前接受 resource。
| imagepalettetotruecolor | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagepng | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagepolygon | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagerectangle | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imageresolution | resolution_x and resolution_y are now nullable.
| imagerotate | 成功时此函数现在返回 GDImage 实例；之前返回 resource。
| imagerotate | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagerotate | 未使用的 ignore_transparent 现在接受 bool；之前接受 int。
| imagesavealpha | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagescale | On success, this function returns a GDImage instance now; previously, a resource was returned.
| imagescale | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagesetbrush | image 和 brush 现在需要 GdImage 实例，之前需要 resource。
| imagesetclip | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagesetinterpolation | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagesetpixel | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagesetthickness | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagesettile | image 和 tile 现在需要 GdImage 实例；之前需要 resource。
| imagestring | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagestringup | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagesx | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagesy | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagetruecolortopalette | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagettfbbox | 新增 options。
| imagettftext | 新增 options。
| imagewbmp | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagewbmp | foreground_color 现在允许为 null。
| imagewebp | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagexbm | image 现在需要 GdImage 实例；之前需要有效的 gd resource。
| imagexbm | foreground_color 现在允许为 null。
| imagexbm | 第四个参数未使用，已移除。
| implode | 在 array 之后传递 separator 已不再支持。
| inflate_add | context expects an InflateContext instance now; previously, a resource was expected.
| inflate_get_read_len | context expects an InflateContext instance now; previously, a resource was expected.
| inflate_get_status | context expects an InflateContext instance now; previously, a resource was expected.
| inflate_init | On success, this function returns an InflateContext instance now; previously, a resource was returned.
| intval | 对象转换时的错误级别已从 E_NOTICE 更改为 E_WARNING。
| is_numeric | 以空格结尾的数字字符串（"42 "）现在将返回 true。以前，会返回 false。
| jdtounix | 此函数在失败时不再返回 false，而是引发 ValueError。
| ldap_add | controls is nullable now; previously, it defaulted to [].
| ldap_add_ext | controls is nullable now; previously, it defaulted to [].
| ldap_bind_ext | controls is nullable now; previously, it defaulted to [].
| ldap_compare | controls is nullable now; previously, it defaulted to [].
| ldap_control_paged_result | This function has been removed.
| ldap_control_paged_result_response | This function has been removed.
| ldap_delete | controls is nullable now; previously, it defaulted to [].
| ldap_delete_ext | controls is nullable now; previously, it defaulted to [].
| ldap_exop_passwd | controls is nullable now; previously, it defaulted to [].
| ldap_first_attribute | The unused third parameter ber_identifier is no longer accepted.
| ldap_list | controls is nullable now; previously, it defaulted to [].
| ldap_mod_add | controls is nullable now; previously, it defaulted to [].
| ldap_mod_del | controls is nullable now; previously, it defaulted to [].
| ldap_mod_replace | controls is nullable now; previously, it defaulted to [].
| ldap_modify_batch | controls is nullable now; previously, it defaulted to [].
| ldap_mod_add_ext | controls is nullable now; previously, it defaulted to [].
| ldap_mod_del_ext | controls is nullable now; previously, it defaulted to [].
| ldap_mod_replace_ext | controls is nullable now; previously, it defaulted to [].
| ldap_next_attribute | The unused third parameter ber_identifier is no longer accepted.
| ldap_read | controls is nullable now; previously, it defaulted to [].
| ldap_rename | controls is nullable now; previously, it defaulted to [].
| ldap_rename_ext | controls is nullable now; previously, it defaulted to [].
| ldap_sasl_bind | dn, password, mech, realm, authc_id, authz_id and props are nullable now.
| ldap_search | controls is nullable now; previously, it defaulted to [].
| ldap_set_rebind_proc | callback is nullable now.
| ldap_sort | This function has been removed.
| levenshtein | 在此版本之前，必须使用两个或者五个参数调用 levenshtein。
| levenshtein | 在此版本之前，如果某个参数字符串的长度超过 255 个字符，则 levenshtein 将会返回 -1。
| libxml_disable_entity_loader | This function has been deprecated.
| libxml_use_internal_errors | use_errors is nullable now. Previously, its default was false.
| localtime | 现在 timestamp 可为 null。
| max | max 现在失败时会抛出 ValueError；之前会返回 false 并发出 E_WARNING 错误。
| max | 由于 字符串到数字的比较 已经改变，max 在这些情况下不再根据参数的顺序返回不同的值。
| mb_check_encoding | value 和 encoding 现在可以为 null。
| mb_chr | 现在 encoding 可以为 null。
| mb_convert_encoding | 现在，当 to_encoding 为无效编码时， mb_convert_encoding 会抛出 ValueError。
| mb_convert_encoding | 现在，当 from_encoding 为无效编码时， mb_convert_encoding 会抛出 ValueError。
| mb_convert_encoding | 现在 from_encoding 可以传入 null。
| mb_convert_kana | 现在 encoding 可以为 null。
| mb_decode_numericentity | 现在 encoding 可以为 null。
| mb_detect_order | 现在 encoding 可以为 null。
| mb_encode_mimeheader | charset 和 transfer_encoding 现在可以为空。
| mb_encode_numericentity | 现在 encoding 可以为 null。
| mb_encoding_aliases | If the encoding is unknown, a ValueError is now thrown; previously an E_WARNING was emitted, and the function returned false.
| mb_ereg | This function returns true on success now. Previously, it returned the byte length of the matched string if a match for pattern was found in string and matches was passed. If the optional parameter matches was not passed or the length of the matched string was 0, this function returned 1.
| mb_ereg_match | options is nullable now.
| mb_ereg_replace | options is nullable now.
| mb_ereg_replace_callback | options is nullable now.
| mb_ereg_search | pattern and options are nullable now.
| mb_ereg_search_init | pattern and options are nullable now.
| mb_ereg_search_pos | pattern and options are nullable now.
| mb_ereg_search_regs | pattern and options are nullable now.
| mb_eregi | This function returns true on success now. Previously, it returned the byte length of the matched string if a match for pattern was found in string and matches was passed. If the optional parameter matches was not passed or the length of the matched string was 0, this function returned 1.
| mb_eregi_replace | options is nullable now.
| mb_get_info | 参数 type 中的 "func_overload" 和 "func_overload_list" 不再被支持。
| mb_http_input | type 现在可为 null。
| mb_http_output | 现在 encoding 可以为 null。
| mb_internal_encoding | 现在 encoding 可以为 null。
| mb_internal_encoding | 如果 encoding 是无效编码，现在抛出 ValueError。以前发出的是 E_WARNING。
| mb_language | language 现在可为 null。
| mb_ord | 现在 encoding 可以为 null。
| mb_parse_str | 第二个参数不再可选。
| mb_regex_encoding | 现在 encoding 可以为 null。
| mb_regex_set_options | If the parameter options is given and not null, the previous options are returned. Formerly, the current options have been returned.
| mb_regex_set_options | options is nullable now.
| mb_regex_set_options | The "e" option now throws a ValueError.
| mb_scrub | 现在 encoding 可以为 null。
| mb_send_mail | additional_params 现在可为 null。
| mb_str_split | 现在 encoding 可以为 null。
| mb_str_split | 此函数在失败时不再返回 false。
| mb_strcut | 现在 encoding 可以为 null。
| mb_strimwidth | 现在 encoding 可以为 null。
| mb_stripos | 现在 needle 接受空字符串。
| mb_stripos | 现在 encoding 可以为 null。
| mb_stristr | 现在 needle 接受空字符串。
| mb_stristr | 现在 encoding 可以为 null。
| mb_strlen | 现在 encoding 可以为 null。
| mb_strpos | 现在 needle 接受空字符串。
| mb_strpos | 现在 encoding 可以为 null。
| mb_strrchr | 现在 needle 接受空字符串。
| mb_strrchr | 现在 encoding 可以为 null。
| mb_strrichr | 现在 needle 接受空字符串。
| mb_strrichr | 现在 encoding 可以为 null。
| mb_strripos | 现在 needle 接受空字符串。
| mb_strripos | 现在 encoding 可以为 null。
| mb_strrpos | 现在 needle 接受空字符串。
| mb_strrpos | 已经删除将 encoding 作为第三个参数而不是 offset 传递。
| mb_strrpos | 现在 encoding 可以为 null。
| mb_strstr | 现在 needle 接受空字符串。
| mb_strstr | 现在 encoding 可以为 null。
| mb_strwidth | 现在 encoding 可以为 null。
| mb_substitute_character | 不再支持将空字符串传递给 substitute_character；应该传递 "none"。
| mb_substitute_character | 现在 encoding 可以为 null。
| mb_substr | 现在 encoding 可以为 null。
| mb_substr_count | 现在 encoding 可以为 null。
| metaphone | The function returned false on failure.
| mhash | key is now nullable.
| min | min 现在失败时会抛出 ValueError；之前会返回 false 并发出 E_WARNING 错误。
| min | 由于 字符串到数字的比较 已经改变，min 在这些情况下不再根据参数的顺序返回不同的值。
| mktime | hour 不再可选。如果需要 Unix 时间戳，可以使用 time。
| mktime | 现在 minute、second、month、day 和 year 允许为 null。
| money_format | 此函数已移除。
| msg_get_queue | On success, this function returns a SysvMessageQueue instance now; previously, a resource was returned.
| msg_receive | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| msg_remove_queue | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| msg_send | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| msg_set_queue | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| msg_stat_queue | queue expects a SysvMessageQueue instance now; previously, a resource was expected.
| mt_rand | 如果 max 小于 min，则会抛出 ValueError 异常。之前会抛出 E_WARNING 错误，并且函数返回 false。
| number_format | 在此版本之前，number_format 接受一个、两个或四个参数（不会是三个）。
| ob_implicit_flush | enable 现在需要 bool 值；之前，需要 int。
| odbc_columns | schema, table and column are now nullable.
| odbc_error | odbc is now nullable.
| odbc_errormsg | odbc is now nullable.
| odbc_exec | flags was removed.
| odbc_execute | The unused flags parameter was removed.
| odbc_fetch_row | row is now nullable.
| odbc_procedurecolumns | Prior to this version, the function could only be called with either one or five arguments.
| odbc_procedures | Prior to this version, the function could only be called with either one or four arguments.
| odbc_tables | schema, table and types are now nullable.
| opendir | 现在 context 允许为 null。
| openssl_csr_export | csr 现在接受 OpenSSLCertificateSigningRequest 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_csr_export_to_file | csr 现在接受 OpenSSLCertificateSigningRequest 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_csr_get_public_key | 成功时此函数现在返回 OpenSSLAsymmetricKey 实例；之前返回类型 OpenSSL key 的 resource。
| openssl_csr_get_public_key | csr 现在接受 OpenSSLCertificateSigningRequest 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_csr_get_subject | csr 现在接受 OpenSSLCertificateSigningRequest 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_csr_new | 成功时，此函数现在返回 OpenSSLCertificateSigningRequest 实例；之前返回类型 OpenSSL X.509 CSR 的 resource。
| openssl_csr_new | private_key 现在接受 OpenSSLAsymmetricKey 实例；之前接受类型 OpenSSL key 的 resource。
| openssl_csr_sign | 成功时，此函数现在返回 OpenSSLCertificate 实例；之前返回类型 OpenSSL X.509 的 resource。
| openssl_csr_sign | csr 现在接受 OpenSSLCertificateSigningRequest 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_csr_sign | ca_certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_csr_sign | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_dh_compute_key | private_key 现在接受 OpenSSLAsymmetricKey；之前接受类型 OpenSSL key 的 resource。
| openssl_free_key | 此函数现已弃用，因为不再有效。
| openssl_free_key | key 现在接受 OpenSSLAsymmetricKey；之前接受类型 OpenSSL key 的 resource。
| openssl_open | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 CSR 的 resource。
| openssl_open | cipher_algo 不再是可选参数。
| openssl_pkcs7_decrypt | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 CSR 的 resource。
| openssl_pkcs7_encrypt | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_pkcs7_sign | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_pkcs7_sign | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 CSR 的 resource。
| openssl_pkcs7_verify | signers_certificates_filename、untrusted_certificates_filename、content 和 output_filename 现在可为 null。
| openssl_pkcs12_export | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_pkcs12_export | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_pkcs12_export_to_file | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 CSR 的 resource。
| openssl_pkcs12_export_to_file | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_pkey_export | key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_pkey_export_to_file | key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_pkey_free | 此函数现已弃用，因为不再有效。
| openssl_pkey_free | key 现在接受 OpenSSLAsymmetricKey；之前接受类型 OpenSSL key 的 resource。
| openssl_pkey_get_details | 现在参数 key 接受 OpenSSLAsymmetricKey； 在此之前，接受 OpenSSL key 类型的 resource。
| openssl_pkey_get_private | 成功时，此函数现在返回 OpenSSLAsymmetricKey 实例；之前返回类型 OpenSSL key 的 resource。
| openssl_pkey_get_private | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_pkey_get_private | passphrase 现在可为 null。
| openssl_pkey_get_public | 成功时，此函数现在返回 OpenSSLAsymmetricKey 实例；之前返回类型 OpenSSL key 的 resource。
| openssl_pkey_get_public | public_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_pkey_new | 成功时此函数会返回 OpenSSLAsymmetricKey 的实例；在之前版本中，则会返回类似为 OpenSSL key 的 resource。
| openssl_private_decrypt | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例。之前接受 OpenSSL key 类型或 OpenSSL X.509 类型的 resource。
| openssl_private_encrypt | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_public_decrypt | public_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例。之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_public_encrypt | public_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例。之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_random_pseudo_bytes | strong_result 现在可为 null。
| openssl_seal | public_key 现在接受 OpenSSLAsymmetricKey 实例 array；之前接受类型 OpenSSL key 的 resource 数组。
| openssl_seal | cipher_algo 不再是可选参数。
| openssl_seal | iv 现在可为 null。
| openssl_sign | private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| openssl_spki_new | private_key 现在接受 OpenSSLAsymmetricKey 实例；之前接受类型 OpenSSL key 的 resource。
| openssl_verify | public_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_x509_check_private_key | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_x509_check_private_key | private_key 现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例；之前接受类型 OpenSSL key 或 OpenSSL X.509 的 resource。
| openssl_x509_checkpurpose | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_x509_checkpurpose | untrusted_certificates_file 现在可为 null。
| openssl_x509_export | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_x509_export_to_file | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_x509_fingerprint | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_x509_free | 此函数现已弃用，因为不再有效。
| openssl_x509_free | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_x509_parse | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_x509_read | 此函数现在成功时返回 OpenSSLCertificate 实例；之前返回类型 OpenSSL X.509 的 resource。
| openssl_x509_read | certificate 现在接受 OpenSSLCertificate 实例；之前接受类型 OpenSSL X.509 的 resource。
| openssl_x509_verify | certificate accepts an OpenSSLCertificate instance now; previously, a resource of type OpenSSL X.509 was accepted.
| openssl_x509_verify | public_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 was accepted.
| pack | 此函数不再在失败时返回 false。
| parse_str | result 是必须项。
| parse_url | parse_url 现在对 query 和 fragment 区分不存在和空值。
| passthru | 如果 command 为空或者包含 null 字节，passthru 现在将抛出 ValueError。之前会发出 E_WARNING 并返回 false。
| password_hash | 失败时 password_hash 不再返回 false，如果密码散列算法无效，则会抛出 ValueError，如果密码散列因未知错误失败，则会抛出 Error。
| password_hash | 参数 algo 可以为 null。
| pcntl_async_signals | enable is nullable now.
| pcntl_getpriority | process_id 现在可以为 null。
| pcntl_setpriority | process_id 可以为 null。
| pfsockopen | timeout 现在可以为 null。
| pg_client_encoding | connection 现在可以为 null。
| pg_close | connection 现在可以为 null。
| pg_dbname | connection 可以为 null。
| pg_end_copy | connection 现在可以为 null。
| pg_fetch_all | 对于零行的结果集，pg_fetch_all 现在将返回一个空数组而不是 array。
| pg_host | connection 现在可为 null。
| pg_last_error | connection 现在可为 null。
| pg_lo_write | length 现在可为 null。
| pg_options | connection 现在可为 null。
| pg_ping | connection 现在可为 null。
| pg_port | connection 现在可为 null。
| pg_trace | connection 现在可为 null。
| pg_tty | connection 现在可为 null。
| pg_untrace | connection 现在可为 null。
| pg_version | connection is now nullable.
| phpversion | extension 现在可为 null。
| printf | 此函数失败时不再返回 false。
| printf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| printf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| printf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| printf | 当传递的参数少于所需的参数时抛出 ArgumentCountError；以前该函数则会发出 E_WARNING。
| readdir | 现在 dir_handle 可以为 null。
| readline_info | var_name 和 value 现在可为 null。
| readline_read_history | filename 现在可为 null。
| readline_write_history | filename 现在可为 null。
| restore_include_path | 此函数已移除。
| rewinddir | 现在 dir_handle 现在允许为 null。
| round | num 不再接受支持数字转换的内部对象。
| sapi_windows_vt100_support | enable is now nullable.
| scandir | 现在 context 允许为 null。
| sem_acquire | semaphore expects a SysvSemaphore instance now; previously, a resource was expected.
| sem_get | On success, this function returns a SysvSemaphore instance now; previously, a resource was returned.
| sem_get | The type of auto_release has been changed from int to bool.
| sem_release | semaphore expects a SysvSemaphore instance now; previously, a resource was expected.
| sem_remove | semaphore expects a SysvSemaphore instance now; previously, a resource was expected.
| session_cache_expire | value 现在可以为 null。
| session_cache_limiter | value 现在可为 null。
| session_id | id 现在可以为 null。
| session_module_name | module 现在可以为空。
| session_name | name 现在可以为 null。
| session_save_path | path 现在可为 null。
| session_set_cookie_params | path、domain、secure 和 httponly 现在可为 null。
| set_error_handler | 删除 errcontext 并不再传递给用户回调。
| shm_attach | On success, this function returns an SysvSharedMemory instance now; previously, a resource was returned.
| shm_attach | size is nullable now.
| shm_detach | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_get_var | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_has_var | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_put_var | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_remove | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shm_remove_var | shm expects a SysvSharedMemory instance now; previously, a resource was expected.
| shmop_close | This function has been deprecated, as this function has no effect anymore.
| shmop_close | shmop expects a Shmop instance now; previously, a resource was expected.
| shmop_delete | shmop expects a Shmop instance now; previously, a resource was expected.
| shmop_open | On success, this function returns an Shmop instance now; previously, a resource was returned.
| shmop_open | If mode is invalid, or size is less than or equal to zero, a ValueError is thrown; previously E_WARNING was emitted instead, and the function returned false.
| shmop_read | shmop expects a Shmop instance now; previously, a resource was expected.
| shmop_read | If offset or size are out of range, a ValueError is thrown; previously E_WARNING was emitted, and false was returned,
| shmop_size | shmop expects a Shmop instance now; previously, a resource was expected.
| shmop_write | Prior to PHP 8.0.0, false was returned on failure.
| shmop_write | shmop expects a Shmop instance now; previously, a resource was expected.
| sleep | 此函数在负数 seconds 时抛出 ValueError，之前会引发 E_WARNING 且函数返回 false。
| socket_accept | 成功时，该函数现在返回一个 Socket 实例；在此之前，返回值是一个 resource。
| socket_addrinfo_bind | 成功时，该函数现在返回一个 Socket 实例；在此之前，返回值是一个 resource。
| socket_addrinfo_bind | 现在 address 是 AddressInfo 实例， 之前是 resource。
| socket_addrinfo_connect | 现在该函数成功时返回 Socket 实例；在此之前，返回值是 resource。
| socket_addrinfo_connect | 现在 address 是 AddressInfo 实例， 之前是 resource。
| socket_addrinfo_explain | 现在 address 是 AddressInfo 实例， 之前是 resource。
| socket_addrinfo_lookup | 成功时，现在函数返回 AddressInfo 实例数组。在此之前，返回的是 resource 数组。
| socket_addrinfo_lookup | service 现在允许为 null。
| socket_bind | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_clear_error | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_clear_error | 参数 socket 可以为 null。
| socket_close | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_connect | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_connect | port 允许为空。
| socket_create | 创建成功时，该函数现在返回一个 Socket 实例； 在此之前，返回的是一个 resource。
| socket_create_listen | 成功时，该函数现在返回一个 Socket 实例；在此之前，返回值是一个 resource。
| socket_create_pair | pair 现在是 Socket 实例的引用数组；在这之前是 resource 的引用数组。
| socket_export_stream | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_get_option | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_getpeername | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_getsockname | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_import_stream | 成功时，该函数现在返回 Socket 实例；在此之前，返回 resource。
| socket_last_error | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_last_error | socket 现在可为空（nullable）。
| socket_listen | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_read | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_recv | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_recvfrom | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_recvmsg | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_send | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_sendmsg | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_sendto | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_sendto | port 现在允许为 null。
| socket_set_block | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_set_nonblock | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_set_option | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_shutdown | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_write | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_write | length 现在允许为 null。
| socket_wsaprotocol_info_export | 现在 socket 是 Socket 实例， 之前是 resource。
| socket_wsaprotocol_info_import | 成功时，该函数现在返回一个 Socket 实例；在此之前，返回的是 resource。
| soundex | Prior to this version, calling the function with an empty string returned false for no particular reason.
| spl_autoload | file_extensions 现在允许为 null。
| spl_autoload_extensions | file_extensions 现在可以为 null。
| spl_autoload_functions | 将更新返回值始终是 array；之前如果自动加载队列未激活，此函数返回 false。
| spl_autoload_register | callback 现在可以为 null。
| sprintf | 此函数失败时不再返回 false。
| sprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| sprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| sprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| sprintf | 当传递的参数少于所需的参数时抛出 ArgumentCountError；以前该函数则会发出 E_WARNING。
| str_split | 如果 length 小于 1，现在会抛出 ValueError；之前会触发 E_WARNING 级别的错误且函数会返回 false。
| str_word_count | characters 可为空（Nullable）类型。
| strcspn | length 现在允许为 null。
| stream_context_create | 现在 options 和 params 可以为 null。
| stream_context_get_default | options is now nullable.
| stream_copy_to_stream | length is now nullable.
| stream_get_contents | 现在 length 可以为 null。
| stream_set_chunk_size | 当 size 比 1 小或者比 PHP_INT_MAX 还大的时候现在会抛出 ValueError。之前产生 E_WARNING 级别的错误并返回 false。
| stream_socket_accept | 现在 timeout 可以为 null。
| stream_socket_client | timeout and context are now nullable.
| stream_socket_enable_crypto | session_stream is now nullable.
| stream_socket_server | context 现在可为 null。
| strftime | timestamp 现在可为 null。
| strip_tags | allowed_tags 允许为 null。
| stripos | needle 现在接受空字符串。
| stripos | 不再支持 int 传递给 needle。
| stristr | needle 现在接受空字符串。
| stristr | 不再支持 int 传递给 needle。
| strpos | needle 现在接受空字符串。
| strpos | 不再支持 int 传入 needle。
| strrchr | needle 现在接受空字符串。
| strrchr | 不再支持将 int 作为 needle 传递。
| strripos | needle 现在接受空字符串。
| strripos | 不再支持将 int 传递给 needle。
| strrpos | needle 现在接受空字符串。
| strrpos | 不再支持将 int 传递给 needle。
| strspn | length 现在允许为 null。
| strstr | needle 现在接受空字符串。
| strstr | 不再支持传递 int 作为 needle。
| strtotime | 现在 baseTimestamp 允许为 null。
| substr | 现在 length 允许为 null。当 length 显式设置为 null 时，函数返回在字符串末尾结束的子字符串，而之前将返回空字符串。
| substr | 函数将返回空字符串, 在此之前返回 false。
| substr_compare | length 现在允许为 null。
| substr_count | length 可以为空（nullable）。
| substr_replace | length 现在允许为 null。
| touch | mtime 和 atime 现在可以为空。
| trigger_error | 如果指定 error_level 无效，此函数现在将抛出 ValueError。之前返回 false。
| uasort | 如果 callback 接受引用传递参数，该方法将会抛出 E_WARNING。
| uksort | 如果 callback 接受引用传递参数，该方法将会抛出 E_WARNING。
| umask | mask 现在可以为 null。
| unixtojd | timestamp 现在可以为 null。
| usort | 如果 callback 接受引用传递参数，该方法将会抛出 E_WARNING。
| vfprintf | 此函数失败时不再返回 false。
| vfprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vfprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vfprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vfprintf | 当传递的参数少于所需的参数时抛出 ValueError；以前该函数则会发出 E_WARNING。
| vprintf | 此函数失败时不再返回 false。
| vprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vprintf | 当传递的参数少于所需的参数时抛出 ValueError；以前该函数则会发出 E_WARNING。
| vsprintf | 此函数失败时不再返回 false。
| vsprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vsprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vsprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vsprintf | 当传递的参数少于所需的参数时抛出 ValueError；以前该函数则会发出 E_WARNING。
| wordwrap | 如果 break 是空字符串，抛出 ValueError；之前此情况会触发 E_WARNING 并且返回 false。
| zip_close | 弃用此函数，取而代之的是对象 API，请参阅 ZipArchive::close。
| zip_entry_close | 弃用此函数，取而代之的是对象 API。
| zip_entry_compressedsize | 弃用此函数，取而代之的是对象 API，请参阅 ZipArchive::statIndex。
| zip_entry_compressionmethod | 弃用此函数，取而代之的是对象 API，请参阅 ZipArchive::statIndex。
| zip_entry_filesize | 弃用此函数，取而代之的是对象 API，请参阅 ZipArchive::statIndex。
| zip_entry_name | 弃用此函数，取而代之的是对象 API，请参阅 ZipArchive::statIndex。
| zip_entry_open | 弃用此函数，取而代之的是对象 API。
| zip_entry_read | 弃用此函数，取而代之的是对象 API，请参阅 ZipArchive::getFromIndex。
| zip_open | 弃用此函数，取而代之的是对象 API，请参阅 ZipArchive::open。
| zip_read | 弃用此函数，取而代之的是对象 API，请参阅 ZipArchive::statIndex。
| GlobIterator::__construct | Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.
| IntlCalendar::setMinimalDaysInFirstWeek | A ValueError is now thrown on invalid input. Previously, false was returned.
| IntlTimeZone::getIDForWindowsID | region is now nullable.
| LimitIterator::__construct | Now throws a ValueError if offset is less than 0; previously it threw a RuntimeException.
| LimitIterator::__construct | Now throws a ValueError if limit is less than -1; previously it threw a RuntimeException.
| Locale::getDisplayLanguage | displayLocale is nullable now.
| Locale::getDisplayName | displayLocale is nullable now.
| Locale::getDisplayRegion | displayLocale is nullable now.
| Locale::getDisplayScript | displayLocale is nullable now.
| Locale::getDisplayVariant | displayLocale is nullable now.
| mysqli_result::fetch_object | constructor_args now accepts [] for constructors with 0 parameters; previously an exception was thrown.
| mysqli_result::field_seek | This function now always returns true. Previously it returned false on failure.
| mysqli_stmt::close | This function now always returns true. Previously it returned false on failure.
| mysqli_stmt::__construct | query is now nullable.
| mysqli::begin_transaction | name is now nullable.
| mysqli::close | 此函数始终返回 true。之前失败时返回 false。
| mysqli::commit | name 现在允许为 null。
| mysqli::debug | This function now always returns true. Previously it returned false on failure.
| mysqli::rollback | name 现在可以为 null。
| NumberFormatter::create | pattern is nullable now.
| PDOStatement::fetchAll | 现在此方法始终返回 array，之前可能在失败时返回 false。
| Phar::addFile | localName 现在可以为空。
| Phar::buildFromIterator | baseDirectory is now nullable.
| Phar::compress | extension is now nullable.
| Phar::convertToData | format, compression, and extension are now nullable.
| Phar::convertToExecutable | format, compression, and extension are now nullable.
| Phar::createDefaultStub | index and webIndex are now nullable.
| Phar::decompress | extension is now nullable.
| Phar::getMetadata | The parameter unserializeOptions has been added.
| Phar::setDefaultStub | webIndex is nullable now.
| Phar::setSignatureAlgorithm | privateKey is now nullable.
| Phar::webPhar | fileNotFoundScript and rewrite are nullable now.
| PharData::addFile | localName is now nullable.
| PharData::buildFromIterator | baseDirectory is now nullable.
| PharData::compress | extension is now nullable.
| PharData::convertToData | format, compression, and extension are now nullable.
| PharData::convertToExecutable | format, compression, and localName are now nullable.
| PharData::decompress | extension is now nullable.
| PharData::setDefaultStub | webIndex is nullable now.
| PharData::setSignatureAlgorithm | privateKey is now nullable.
| PharFileInfo::getMetadata | The parameter unserializeOptions has been added.
| PharFileInfo::isCompressed | compression is now nullable.
| RecursiveDirectoryIterator::__construct | Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.
| RecursiveIteratorIterator::getSubIterator | level is now nullable.
| ReflectionClass::getConstants | 添加 filter 。
| ReflectionClass::getReflectionConstants | filter has been added.
| ReflectionFunction::invokeArgs | args keys will now be interpreted as parameter names, instead of being silently ignored.
| ReflectionFunction::isDisabled | This function has been deprecated, as ReflectionFunction can no longer be constructed for disabled functions.
| ReflectionMethod::export | 此函数已移除。
| ReflectionMethod::getClosure | object 现在可以为 null。
| ReflectionMethod::invokeArgs | args 的键现在将解释为参数的名称，而不是默默忽略。
| ReflectionParameter::getClass | 此函数已被弃用。推荐使用 ReflectionParameter::getType 代替。
| ReflectionParameter::getDefaultValue | This method now allows getting the default value of parameters of built-in functions and built-in class methods. Previously, a ReflectionException was thrown.
| ReflectionParameter::getDefaultValueConstantName | This method now allows getting the default values' constant names of built-in functions and built-in class methods. Previously, a ReflectionException was thrown.
| ReflectionParameter::isArray | This function has been deprecated in favor of ReflectionParameter::getType instead.
| ReflectionParameter::isCallable | This function has been deprecated in favor of ReflectionParameter::getType instead.
| ReflectionProperty::getValue | object is nullable now.
| ReflectionProperty::isInitialized | object is nullable now.
| ReflectionType::__toString | ReflectionType::__toString has been undeprecated.
| Reflector::export | 此函数已移除。
| SimpleXMLElement::asXML | filename is nullable now.
| SoapClient::__doRequest | The type of oneWay is bool now; formerly it was int.
| SoapClient::__setCookie | value is now nullable.
| SoapServer::handle | request is now nullable.
| SplFileInfo::getFileInfo | class is now nullable.
| SplFileInfo::getPathInfo | class is now nullable.
| SplFileInfo::openFile | context is now nullable.
| SplFixedArray::__construct | Now throws a ValueError if size is a negative; previously it threw a InvalidArgumentException.
| tidy::__construct | filename, config, encoding and useIncludePath are nullable now.
| tidy::parseFile | config and encoding are nullable now.
| tidy::parseString | config and encoding are nullable now.
| tidy::repairFile | tidy::repairFile is a static method now.
| tidy::repairFile | config and encoding are nullable now.
| tidy::repairString | tidy::repairString is a static method now.
| tidy::repairString | config and encoding are nullable now.
| tidy::repairString | This function no longer accepts the useIncludePath parameter.
| XMLReader::getAttribute | This function can no longer return false.
| XMLReader::getAttributeNs | This function can no longer return false.
| XMLReader::lookupNamespace | This function can no longer return false.
| XMLReader::next | name is nullable now.
| XMLReader::open | XMLReader::open is now declared as static method, but can still be called on an XMLReader instance.
| XMLReader::XML | XMLReader::XML is now declared as static method, but can still be called on an XMLReader instance.
| XMLWriter::endAttribute | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endCdata | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endComment | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endDocument | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endDtd | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endDtdAttlist | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endDtdElement | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endDtdEntity | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endElement | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::endPi | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::flush | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::flush | This function can no longer return false.
| XMLWriter::fullEndElement | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::openMemory | This function returns now an XMLWriter instance on success. Previously, a resource has been returned in this case.
| XMLWriter::openUri | This function returns now an XMLWriter instance on success. Previously, a resource has been returned in this case.
| XMLWriter::outputMemory | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::setIndent | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::setIndentString | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startAttribute | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startAttributeNs | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startAttributeNs | prefix is nullable now.
| XMLWriter::startCdata | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startComment | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startDocument | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startDtd | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startDtdAttlist | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startDtdElement | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startDtdEntity | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startElement | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startElementNs | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::startPi | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::text | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeAttribute | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeAttributeNs | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeCdata | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeComment | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeDtd | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeDtdAttlist | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeDtdElement | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeDtdEntity | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeDtdEntity | publicId, systemId and notationData are nullable now.
| XMLWriter::writeElement | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeElementNs | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writePi | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| XMLWriter::writeRaw | 现在 writer 需要 XMLWriter 实例， 之前需要的是 resource。
| ZipArchive::addEmptyDir | flags was added.
| ZipArchive::addFile | flags was added.
| ZipArchive::addFromString | flags was added.
| ZipArchive::addGlob | "flags" in options was added.
| ZipArchive::addGlob | "comp_method", "comp_flags", "enc_method" and "enc_password" in options were added.
| ZipArchive::getStatusString | This method can be called on closed archive.
| ZipArchive::getStatusString | This method no longer returns false on failure.
| ZipArchive::setEncryptionIndex | password is now nullable.
| ZipArchive::setEncryptionName | password is now nullable.
7.4.12 | jdtounix | 扩充了 julian_day 的上限。以前无论计算机体系结构如何，都是 2465342。
| tidyNode::isHtml | This function has been fixed to have reasonable behavior. Previously, almost any node was reported as being an HTML node.
7.4.4 | proc_open | 为 options 参数增加 create_new_console 选项。
7.4.2 | dba_open | lmdb 驱动现在支持额外的 map_size 参数。
| dba_popen | lmdb 驱动现在支持额外的 map_size 参数。
7.4.0 | DatePeriod::__construct | recurrences must be greater than 0 now.
| array_key_exists | 已弃用将 object 传递给 array 参数。建议使用 property_exists。
| array_merge | 允许不带参数调用，之前版本至少需要一个参数。
| array_merge_recursive | 允许不传递参数调用，之前的版本中至少需要一个参数。
| base_convert | 传递任何无效字符现在将生成弃用通知。但仍会计算结果，就好像无效字符不存在一样。
| bindec | 传递任何无效字符现在将生成弃用通知。但仍会计算结果，就好像无效字符不存在一样。
| chr | 此函数不再静默接受不支持的 codepoint，并会将它们转为 0。
| convert_cyr_string | 此函数已废弃。
| curl_version | 弃用可选的 age 参数，如果传递值，则忽略。
| current | SPL 类的实例现在被视为没有属性的空对象，而不是调用与此函数同名的 Iterator 方法。
| end | SPL 类的实例现在被视为没有属性的空对象，而不是调用与此函数同名的 Iterator 方法。
| fgetcsv | escape 参数也接受空字符串来禁用所有的转义机制。
| fputcsv | escape 参数现在接受空字符串来禁用专有转义机制。
| get_declared_classes | 之前 get_declared_classes 返回的顺序总是父类在前，子类在后。现在不会这样了。get_declared_classes 的返回值将不再保证顺序。
| get_magic_quotes_gpc | 此函数已废弃。
| get_magic_quotes_runtime | 此函数已废弃。
| gzread | This functions returns false on failure now; previously 0 was returned.
| gzwrite | This functions returns false on failure now; previously 0 was returned.
| hash_algos | 支持 crc32c。
| hebrevc | 此函数已废弃。
| hexdec | 传递任何无效字符现在将生成弃用通知。但仍会计算结果，就好像无效字符不存在一样。
| idn_to_ascii | 现在 variant 的默认值为 INTL_IDNA_VARIANT_UTS46 ， 而不是已弃用的 INTL_IDNA_VARIANT_2003 。
| idn_to_utf8 | 现在 variant 的默认值为 INTL_IDNA_VARIANT_UTS46 ， 而不是已弃用的 INTL_IDNA_VARIANT_2003 。
| imagecropauto | The behavior of imagecropauto() in the bundled libgd has been synced with that of system libgd: IMG_CROP_DEFAULT no longer falls back to IMG_CROP_SIDES and threshold-cropping now uses the same algorithm as system libgd.
| imagecropauto | The default value of mode has been changed to IMG_CROP_AUTO. Formerly, the default value has been -1 which corresponds to IMG_CROP_DEFAULT, but passing -1 is now deprecated.
| imagefilter | 新增散射支持（IMG_FILTER_SCATTER）。
| implode | 在 array 之后传递 separator （即：使用遗留写法）已被废弃。
| key | SPL 类的实例现在被视为没有属性的空对象，而不是调用与此函数同名的 Iterator 方法。
| ldap_control_paged_result | This function has been deprecated.
| ldap_control_paged_result_response | This function has been deprecated.
| method_exists | 针对继承的私有方法的类检查现在返回 false。
| money_format | 此函数已废弃。 使用 NumberFormatter::formatCurrency 替代。
| next | SPL 类的实例现在被视为没有属性的空对象，而不是调用与此函数同名的 Iterator 方法。
| octdec | 传递任何无效字符现在将生成弃用通知。但仍会计算结果，就好像无效字符不存在一样。
| openssl_random_pseudo_bytes | 此函数失败时不再返回 false，而是会抛出 Exception。
| password_hash | 现在 algo 参数可支持 string 类型，但为了向后兼容也支持 int 类型。
| password_hash | 扩展 sodium 提供了 Argon2 密码的替代实现。
| password_needs_rehash | 现在 algo 参数可以支持 string 类型，但为了向后兼容性，同时支持 int 类型。
| preg_replace_callback | 新增 flags 参数。
| preg_replace_callback_array | The flags parameter was added.
| prev | SPL 类的实例现在被视为没有属性的空对象，而不是调用与此函数同名的 Iterator 方法。
| proc_open | proc_open 的 command 参数现在也允许数组类型。
| proc_open | 为 options 参数增加 create_process_group 选项。
| reset | SPL 类的实例现在被视为没有属性的空对象，而不是调用与此函数同名的 Iterator 方法。
| restore_include_path | 此函数已废弃。
| stat | On Windows, the device number is now the serial number of the volume that contains the file, and the inode number is the identifier associated with the file.
| stat | The size, atime, mtime and ctime statistics of symlinks are always those of the target. This was previously not the case for NTS builds on Windows.
| str_getcsv | escape 现在将空字符串视为禁用专有转义机制的信号。以前视为默认参数值。
| strip_tags | allowed_tags 现在可以接受 array。
| unserialize | 新增 options 的 max_depth 元素，设置反序列化时允许的最大结构深度。
| Locale::lookup | defaultLocale is nullable now.
| mysqli::__construct | All parameters are now nullable.
| mysqli::real_connect | 所有的参数都可为 null。
| ReflectionClass::setStaticPropertyValue | 使用 ReflectionClass::setStaticPropertyValue 设置 private 或 protected 静态属性现在会导致致命错误。之前会抛出 ReflectionException。
| ReflectionMethod::export | 此函数已废弃。
| Reflector::export | 此函数已废弃。
| SplFileObject::fgetcsv | The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
| SplFileObject::fputcsv | The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
| SplFileObject::fwrite | The function now returns false instead of zero on failure.
| SplFileObject::getCsvControl | The escape character can now be an empty string.
| SplFileObject::setCsvControl | The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.
| SQLite3Stmt::bindParam | param now also supports the @param notation.
| SQLite3Stmt::bindValue | param now also supports the @param notation.
7.3.24 | jdtounix | 扩充了 julian_day 的上限。以前无论计算机体系结构如何，都是 2465342。
| tidyNode::isHtml | This function has been fixed to have reasonable behavior. Previously, almost any node was reported as being an HTML node.
7.3.15、7.4.3 | curl_setopt | 引入 CURLOPT_HTTP09_ALLOWED。
7.3.14 | dba_open | lmdb 驱动现在支持额外的 map_size 参数。
| dba_popen | lmdb 驱动现在支持额外的 map_size 参数。
7.3.6 | DatePeriod::__construct | recurrences must be greater than 0 now.
| SplFileObject::__toString | Changed from an alias of SplFileObject::current to an alias of SplFileObject::fgets.
7.3.5 | substr_compare | offset 现在可能等于 haystack。
7.3.0 | DateTimeImmutable::createFromFormat | The v format specifier has been added.
| apache_request_headers | 此函数可用于 FPM SAPI 模式。
| array_push | 可以只用一个参数来调用此函数，之前版本中至少需要两个参数。
| array_unshift | 现在可以只用一个参数来调用，之前至少需要两个参数。
| assert | 弃用在命名空间中声明 assert() 函数。这样声明会发出 E_DEPRECATED。
| bcmul | 现在 bcmul 可以按想要的小数点位数返回数字。 而之前，返回的数字会忽略尾随零（trailing decimal zeroes）。
| bcpow | 现在 bcpow 可以按想要的小数点位数返回数字。 而之前，返回的数字会忽略尾随零（trailing decimal zeroes）。
| bcscale | 现在 bcscale 不仅可以设置，还可以获取当前的小数点保留位数。 用于设置的时候，现在会返回之前的位数。 之前 scale 是强制的参数， 且 bcscale 总是返回 true。
| compact | 现在，如果字符串指向的变量未定义，compact 会产生 E_NOTICE 级错误。在此之前，这样的字符串会默默地跳过。
| curl_getinfo | 引入 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T、CURLINFO_CONTENT_LENGTH_UPLOAD_T、 CURLINFO_HTTP_VERSION、CURLINFO_PROTOCOL、CURLINFO_PROXY_SSL_VERIFYRESULT、CURLINFO_SCHEME、CURLINFO_SIZE_DOWNLOAD_T、CURLINFO_SIZE_UPLOAD_T、CURLINFO_SPEED_DOWNLOAD_T、CURLINFO_SPEED_UPLOAD_T、CURLINFO_APPCONNECT_TIME_T、CURLINFO_CONNECT_TIME_T、CURLINFO_FILETIME_T、CURLINFO_NAMELOOKUP_TIME_T、CURLINFO_PRETRANSFER_TIME_T、CURLINFO_REDIRECT_TIME_T、CURLINFO_STARTTRANSFER_TIME_T、CURLINFO_TOTAL_TIME_T。
| curl_setopt | 引入 CURLOPT_ABSTRACT_UNIX_SOCKET、CURLOPT_KEEP_SENDING_ON_ERROR、CURLOPT_PRE_PROXY、CURLOPT_PROXY_CAINFO、CURLOPT_PROXY_CAPATH、CURLOPT_PROXY_CRLFILE、CURLOPT_PROXY_KEYPASSWD、CURLOPT_PROXY_PINNEDPUBLICKEY、CURLOPT_PROXY_SSLCERT、CURLOPT_PROXY_SSLCERTTYPE、CURLOPT_PROXY_SSL_CIPHER_LIST、CURLOPT_PROXY_SSLKEY、CURLOPT_PROXY_SSLKEYTYPE、CURLOPT_PROXY_SSL_OPTIONS、CURLOPT_PROXY_SSL_VERIFYHOST、CURLOPT_PROXY_SSL_VERIFYPEER、CURLOPT_PROXY_SSLVERSION、CURLOPT_PROXY_TLSAUTH_PASSWORD、CURLOPT_PROXY_TLSAUTH_TYPE、CURLOPT_PROXY_TLSAUTH_USERNAME、CURLOPT_SOCKS5_AUTH、CURLOPT_SUPPRESS_CONNECT_HEADERS、CURLOPT_DISALLOW_USERNAME_IN_URL、CURLOPT_DNS_SHUFFLE_ADDRESSES、CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS、CURLOPT_HAPROXYPROTOCOL、CURLOPT_PROXY_TLS13_CIPHERS、CURLOPT_SSH_COMPRESSION、CURLOPT_TIMEVALUE_LARGE 和 CURLOPT_TLS13_CIPHERS。
| define | 废弃了 case_insensitive，并将在 8.0.0 版中移除。
| ftp_fget | mode 参数现在可选。以前强制要求。
| ftp_fput | mode 参数现在可选。以前强制要求。
| ftp_get | mode 参数现在可选。以前强制要求。
| ftp_nb_fget | 参数 mode 变为可选参数。 在之前的版本中，这是一个必填参数。
| ftp_nb_fput | 参数 mode 变为可选参数。 在之前的版本中，这是一个必填参数。
| ftp_nb_get | mode 参数变为可选，之前是强制性的。
| ftp_nb_put | mode 参数为可选，之前版本中为必填。
| ftp_put | mode 参数为可选，之前版本中为必选。
| getallheaders | 该函数可以在 FPM SAPI 中使用。
| imagecreatefromstring | 现在支持 WEBP（如果使用的是 libgd）。
| is_countable | is_countable 被添加。
| json_decode | flags 新增 JSON_THROW_ON_ERROR。
| json_encode | flags 参数新增 JSON_THROW_ON_ERROR 常量。
| ldap_add | Support for controls added
| ldap_compare | Support for controls added
| ldap_delete | Support for controls added
| ldap_exop | Support for controls added
| ldap_exop_passwd | Support for controls added
| ldap_list | Support for controls added
| ldap_mod_add | Support for controls added
| ldap_mod_del | Support for controls added
| ldap_mod_replace | Support for controls added
| ldap_modify_batch | Support for controls added
| ldap_mod_add_ext | Support for controls added
| ldap_mod_del_ext | Support for controls added
| ldap_mod_replace_ext | Support for controls added
| ldap_parse_result | Support for controls added
| ldap_read | Support for controls added
| ldap_rename | Support for controls added
| ldap_rename_ext | Support for controls added
| ldap_search | Support for controls added
| list | 支持在数组解构时传引用。
| mb_convert_case | 添加对 MB_CASE_FOLD、MB_CASE_UPPER_SIMPLE、MB_CASE_LOWER_SIMPLE、MB_CASE_TITLE_SIMPLE 和 MB_CASE_FOLD_SIMPLE 作为 mode 的支持。
| password_hash | 增加 PASSWORD_ARGON2ID，支持 Argon2id 密码算法。
| preg_quote | 字符 # 被增加为需要转义的。
| session_get_cookie_params | 返回的数组中已添加“samesite”条目。
| session_set_cookie_params | 新增支持 lifetime_or_options 数组的替代签名。此签名还支持 SameSite cookie 属性的设置。
| setcookie | 新增对替代签名 options 数组的支持。此签名还支持 SameSite cookie 属性的设置。
| setrawcookie | 新增替代签名 options 的支持。此签名还支持设置 SameSite cookie 属性。
| stripos | 弃用 int 传递给 needle。
| stristr | 弃用 int 传递给 needle。
| strpos | 弃用 int 传入 needle。
| strrchr | 弃用将 int 作为 needle 传递。
| strripos | 弃用将 int 传递给 needle。
| strrpos | 弃用将 int 传递给 needle。
| strstr | 弃用传递 int 作为 needle。
| unlink | 现在 Windows 也可以用 unlink 删除文件句柄还在使用中的文件了，在此之前是无法删除的。 然而，还是无法重新创建文件，需要等到所有句柄都关闭才可以。
| var_export | 现在将 stdClass 对象作为数组类型转换为对象输出（ (object) array( ... )），而不是使用不存在的 stdClass::__setState 方法。实际效果是，现在 stdClass 是可输出的，生成的代码甚至可以在早期的 PHP 版本上运行。
7.2.19 | DatePeriod::__construct | recurrences must be greater than 0 now.
| SplFileObject::__toString | Changed from an alias of SplFileObject::current to an alias of SplFileObject::fgets.
7.2.18 | litespeed_finish_request | This function became available.
| substr_compare | offset 现在可能等于 haystack。
7.2.12 | DateInterval::format | The F and f format will now always be positive.
7.2.0 | array_unique | 如果 flags 是 SORT_STRING， 之前会复制 array 并移除非唯一数组（之后并不打包数组）， 现在是通过添加唯一元素来生成新数组。这可能会导致不同的数字索引。
| assert | 弃用使用 string 作为 assertion。当 assert.active 和 zend.assertions 都设为 1 时，现在会发出 E_DEPRECATED 通知。
| bcmod | 现在 num1 和 num2 不会截断成整数。 所以现在 bcmod 的表现更接近 fmod 而不是 % 操作符。
| bcmod | 新增参数 scale。
| count | 当 value 参数传入了无效的 countable 类型， count 现在会产生警告。
| date_parse | 返回数组的 zone 键现在代表秒，而不是分钟。并且正负符号已反转，例如：之前是 -120 现在是 7200。
| date_parse_from_format | The zone element of the returned array represents seconds instead of minutes now, and its sign is inverted. For instance -120 is now 7200.
| date_sun_info | The calculation was fixed with regards to local midnight instead of local noon, which changes the results slightly.
| exif_read_data | file 参数现在起支持本地文件和流式资源。
| exif_read_data | 新增了以下 EXIF 格式的支持： Samsung DJI Panasonic Sony Pentax Minolta Sigma/Foveon AGFA Kyocera Ricoh Epson
| exif_thumbnail | file 参数现在支持本地文件和流资源。
| ezmlm_hash | 此函数已废弃。
| get_class | 在此版本之前，object 的默认值是 null，它与不传递任何值有相同的效果。object 已经移除了默认值 null 且不再是有效的输入。
| gettype | 现在，已关闭的资源报告为 'resource (closed)'。此前，已关闭的资源报告为 'unknown type'。
| hash_copy | 接受的参数以及返回值从资源类型修改为 HashContext 对象类型。
| hash_final | 接收参数从资源类型修改为 HashContext 对象类型。
| hash_hmac | 不再支持非加密的散列函数（adler32、crc32、crc32b、fnv132、fnv1a32、fnv164、fnv1a64、joaat）。
| hash_hmac_file | 禁用非加密散列函数（adler32、crc32、crc32b、fnv132、fnv1a32、fnv164、fnv1a64、joaat）。
| hash_init | 当使用 HASH_HMAC 选项的时候，不再支持非加密的散列函数（adler32，crc32，crc32b，fnv132，fnv1a32，fnv164，fnv1a64，joaat）。
| hash_init | 返回 HashContext 对象，不再返回资源类型。
| hash_pbkdf2 | 不再支持非加密的散列函数（adler32、crc32、crc32b、fnv132、fnv1a32、fnv164、fnv1a64、joaat）。
| hash_update | 接收参数从资源类型修改为 HashContext 对象类型。
| hash_update_file | 接收参数从资源类型修改为 HashContext 对象类型。
| hash_update_stream | 接收参数从资源类型修改为 HashContext 对象类型。
| idn_to_ascii | INTL_IDNA_VARIANT_2003 已被弃用； 可以使用 INTL_IDNA_VARIANT_UTS46 代替。
| idn_to_utf8 | INTL_IDNA_VARIANT_2003 已被弃用； 可以使用 INTL_IDNA_VARIANT_UTS46 代替。
| imageantialias | imageantialias 现在普遍可用。以前只有编译 PHP 时使用捆绑版本的 GD 库才可用。
| imagegd | imagegd 现在允许输出真彩色图像。以前，已隐式转换为调色板。
| imagelayereffect | 新增 IMG_EFFECT_MULTIPLY（要求系统 libgd >= 2.1.1 或捆绑 libgd）。
| imagetypes | 新增 IMG_BMP。
| is_object | 没有定义类（__PHP_Incomplete_Class 类）的未序列化对象，is_object 现在返回 true，之前返回 false。
| json_decode | 现在 associative 允许为 null。
| json_decode | flags 新增 JSON_INVALID_UTF8_IGNORE、JSON_INVALID_UTF8_SUBSTITUTE。
| json_encode | flags 参数新增 JSON_INVALID_UTF8_IGNORE 和 JSON_INVALID_UTF8_SUBSTITUTE 常量。
| mail | 现在 additional_headers 参数开始支持 array。
| mb_check_encoding | 此函数现在也接受 array 作为 value。之前仅支持 string。
| mb_convert_encoding | 现在该函数的 string 参数同时能接受 array 类型。 在此之前，仅支持 string。
| mb_parse_str | 弃用在没有第二个参数的时候调用 mb_parse_str。
| mb_send_mail | additional_headers 参数现在也接受 array。
| mt_rand | rand 已收到模偏差的 错误修复。这意味着使用特定种子生成的序列可能与 64 位机器上的 PHP 7.1.0 不同。
| number_format | number_format 现在再也不会返回 -0，之前 num 为 -0.01 的情况下可以返回 -0。
| openssl_pkcs7_verify | 新增 output_filename 参数。
| pack | float 和 double 类型支持大端和小端。
| parse_str | 不带第二个参数的情况下使用 parse_str 会产生 E_DEPRECATED 警告。
| password_hash | 增加 PASSWORD_ARGON2I，支持 Argon2i 密码算法。
| preg_match | 现在 $flags 参数支持 PREG_UNMATCHED_AS_NULL。
| preg_match_all | 现在 $flags 参数可以支持 PREG_UNMATCHED_AS_NULL。
| preg_quote | delimiter 现在可为 null。
| proc_nice | 在 Windows 平台上可用。
| rand | rand 已收到模偏差的 错误修复。这意味着使用特定种子生成的序列可能与 64 位机器上的 PHP 7.1.0 不同。
| read_exif_data | 这个函数别名被废弃。
| session_abort | The return type of this function is bool now. Formerly, it has been void.
| session_module_name | 不允许设置模块名称为 "user"。 在之前的版本中，如果设置为 "user"，那么会被静默的忽略到。
| session_name | session_name 函数会检查会话状态， 之前的版本仅仅检查 cookie 状态。 所以，旧版本的 PHP 允许你在调用 session_start 函数之后再调用 session_name 函数， 新版本的 PHP 不再允许这样做了。
| session_reset | The return type of this function is bool now. Formerly, it has been void.
| session_set_cookie_params | 成功时返回 true， 或者在失败时返回 false。以前该函数返回 void。
| session_unset | 此函数的返回类型现在是 bool。以前是 void。
| session_write_close | The return type of this function is bool now. Formerly, it has been void.
| set_error_handler | errcontext 被废弃。使用此参数时会导致 E_DEPRECATED 提醒。
| unpack | float and double types supports both Big Endian and Little Endian.
| utf8_decode | This function has been moved from the XML extension to the core of PHP. In previous versions, it was only available if the XML extension was installed.
| utf8_encode | This function has been moved from the XML extension to the core of PHP. In previous versions, it was only available if the XML extension was installed.
| PDOStatement::debugDumpParams | PDOStatement::debugDumpParams 现在返回发送到数据库的 SQL，包括完整的原始查询（包括替换的占位符及其边界值）。请注意，这仅在打开模拟预处理语句时才可用。
| ReflectionClass::getMethods | filter 现在允许为 null。
| ReflectionClass::getProperties | filter 现在允许为 null。
| SQLite3::openBlob | The flags parameter has been added, allowing to write BLOBs; formerly only reading was supported.
7.1.5 | IntlDateFormatter::format | Support for providing general DateTimeInterface objects to the datetime parameter was added. Formerly, only proper DateTime objects were supported.
7.1.4 | PDO::sqliteCreateFunction | The flags parameter has been added.
| SQLite3::createFunction | The flags parameter has been added.
7.1.2 | dns_get_record | 新增对 CAA 记录的支持。
| fopen | 新增 'e' 选项。
7.1.1 | get_defined_functions | 新增 exclude_disabled 参数。
7.1.0 | DateInterval::format | The F and f format characters were added.
| DateTime::setTime | 新增 microsecond 参数。
| DateTimeImmutable::__construct | From now on microseconds are filled with actual value. Not with '00000'.
| DateTimeImmutable::setTime | The microsecond parameter was added.
| DateTimeZone::listIdentifiers | 现在，countryCode 可以为 null。
| array_rand | 内部随机化算法已从 libc rand 函数更改为使用 梅森旋转算法（Mersenne Twister） 随机数生成器。
| curl_multi_setopt | 引入 CURLMOPT_PUSHFUNCTION。
| exif_imagetype | 新增 WebP 支持。
| file_get_contents | 支持负数 offset。
| get_headers | 新增 context 参数。
| getenv | 现在可以省略 name 来检索所有环境变量的关联数组 array。
| getimagesize | 新增 WebP 支持。
| getopt | 添加 rest_index 参数。
| grapheme_extract | Support for negative offsets has been added.
| grapheme_stripos | Support for negative offsets has been added.
| grapheme_strpos | Support for negative offsets has been added.
| hash_algos | 加入 sha512/224，sha512/256，sha3-224，sha3-256，sha3-384 以及 sha3-512 算法的支持。
| iconv_strpos | Support for negative offsets has been added.
| json_decode | An empty JSON key ("") can be encoded to the empty object property instead of using a key with value _empty_.
| json_encode | flags 参数新增 JSON_UNESCAPED_LINE_TERMINATORS 常量。
| json_encode | 对 float 值进行编码时，使用 serialize_precision 代替 precision。
| list | 现在可以指定 list 中的键。 这就可以解构非数字键或者无顺序的数组。
| long2ip | 参数 ip 的类型从 string 改成 int。
| mb_ereg | mb_ereg will now set matches to an empty array, if nothing matched. Formerly, matches was not modified in that case.
| mb_ereg_replace | The function checks whether string is valid for the current encoding.
| mb_ereg_replace | The e modifier has been deprecated.
| mb_ereg_replace_callback | The function checks whether string is valid for the current encoding.
| mb_ereg_search_setpos | Support for negative offsets has been added.
| mb_eregi | mb_eregi will now set matches to an empty array, if nothing matched. Formerly, matches was not modified in that case.
| mb_eregi_replace | The function checks whether string is valid for the current encoding.
| mb_eregi_replace | The e modifier has been deprecated.
| mb_regex_set_options | The "e" option now emits an E_DEPRECATED.
| mb_strimwidth | 支持负数的 start 和 width。
| mb_stripos | 支持 offset 使用负数。
| mb_strpos | 支持负数的 offset。
| mt_rand | rand 成为 mt_rand 的别名。
| mt_rand | mt_rand 成为使用梅森旋转（Mersenne Twister）算法的固定、正确版本。要使用旧行为，请使用 mt_srand 并将 MT_RAND_PHP 作为第二个参数。
| mt_srand | srand 成为 mt_srand 的别名。
| mt_srand | mt_rand 成为使用梅森旋转（Mersenne Twister）算法的固定、正确版本。要使用旧行为，请使用 mt_srand 并将 MT_RAND_PHP 作为第二个参数。
| openssl_csr_new | options 现在也支持 curve_name。
| openssl_decrypt | 添加了 tag 和 aad 参数。
| openssl_encrypt | 增加了 tag、aad、tag_length 参数
| openssl_pkey_new | options 参数中增加了 curve_name 键，以便基于椭圆曲线算法创建 EC 密钥。
| output_add_rewrite_var | 自 PHP 7.1.0 起，使用专用的输出缓冲区， url_rewriter.tags 仅用于输出函数，并且 url_rewriter.hosts 可用。在 PHP 7.1.0 之前，由 output_add_rewrite_var 设置的重写变量共享具有透明 session id 支持的输出缓冲区（请参阅 session.trans_sid_tags）。
| output_reset_rewrite_vars | 在 PHP 7.1.0 之前，使用 output_add_rewrite_var 设置重写变量使用相同的 Session 模块 trans sid 输出缓冲区。从 PHP 7.1.0 起，使用专用的输出缓冲区，output_reset_rewrite_vars 仅删除由 output_add_rewrite_var 定义的重写变量。
| pcntl_signal | 从 PHP 7.1.0 开始，处理程序 callback 指定为第二个参数，其中包含特定信号的 siginfo。仅当操作系统具有 siginfo_t 结构体时才提供此数据。如果操作系统未实现 siginfo_t，则提供 NULL。
| pcntl_signal_get_handler | pcntl_signal_get_handler has been added.
| pg_fetch_all | 新增 mode 参数。
| pg_last_notice | 新增 mode 参数。
| pg_select | 新增 mode 参数。
| rand | rand 成为 mt_rand 的别名。
| session_start | 当 session_start 执行失败， 无法开始一个会话的时候，会返回 false， 并且不会初始化超级变量 $_SESSION。
| shuffle | 内置的随机数产生算法从 libc rand 函数改成梅森旋转伪随机数生成算法。
| srand | srand 成为 mt_srand 的别名。
| str_shuffle | 内置的随机算法从 libc rand 函数更改为梅森旋转伪随机数生成算法。
| stripos | 开始支持负数的 offset。
| strpos | 开始支持负数的 offset。
| substr_count | 开始支持负数的 offset 和 length。
| tempnam | 当回退到系统的临时目录时 tempnam 会发出一个通知。
| unpack | The optional offset has been added.
| unserialize | options 的 allowed_classes 元素现在是严格类型，即如果给出 array 或 bool 以外的任何内容，则 unserialize 返回 false 并发出 E_WARNING。
| ReflectionType::__toString | ReflectionType::__toString has been deprecated.
| SessionHandler::gc | Prior to this version, the function returned true on success.
| SessionHandlerInterface::gc | Prior to this version, the function returned true on success.
7.0.16 | dns_get_record | 新增对 CAA 记录的支持。
| fopen | 新增 'e' 选项。
7.0.15 | get_defined_functions | 新增 exclude_disabled 参数。
7.0.15，7.1.1 | pack | 添加了 “e”,“E”,“g” 和 “G” 代码以启用 float 和 double 的字节顺序支持。
7.0.11 | iconv_substr | 如果 string 等于 offset 个字符，将返回空字符串。之前的版本里，这种情况会返回 false。
7.0.10 | imagetypes | 新增 IMG_WEBP。
| SplFileObject::getCsvControl | Added the escape character to the returned array.
| SQLite3::__construct | filename 可以为空，以使用私有的临时磁盘数据库。
7.0.9 | getenv | 添加 local_only 参数。
7.0.7 | curl_multi_setopt | 引入 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE、CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE、CURLMOPT_MAX_HOST_CONNECTIONS、CURLMOPT_MAX_PIPELINE_LENGTH 和 CURLMOPT_MAX_TOTAL_CONNECTIONS。
| curl_setopt | 引入 CURL_HTTP_VERSION_2、CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE、 CURL_HTTP_VERSION_2TLS、CURL_REDIR_POST_301、 CURL_REDIR_POST_302、CURL_REDIR_POST_303、 CURL_REDIR_POST_ALL、CURL_VERSION_KERBEROS5、 CURL_VERSION_PSL、CURL_VERSION_UNIX_SOCKETS、 CURLAUTH_NEGOTIATE、CURLAUTH_NTLM_WB、 CURLFTP_CREATE_DIR、CURLFTP_CREATE_DIR_NONE、 CURLFTP_CREATE_DIR_RETRY、CURLHEADER_SEPARATE、 CURLHEADER_UNIFIED、CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE、 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE、CURLMOPT_MAX_HOST_CONNECTIONS、 CURLMOPT_MAX_PIPELINE_LENGTH、CURLMOPT_MAX_TOTAL_CONNECTIONS、 CURLOPT_CONNECT_TO、CURLOPT_DEFAULT_PROTOCOL、 CURLOPT_DNS_INTERFACE、CURLOPT_DNS_LOCAL_IP4、 CURLOPT_DNS_LOCAL_IP6、CURLOPT_EXPECT_100_TIMEOUT_MS、 CURLOPT_HEADEROPT、CURLOPT_LOGIN_OPTIONS、 CURLOPT_PATH_AS_IS、CURLOPT_PINNEDPUBLICKEY、 CURLOPT_PIPEWAIT、CURLOPT_PROXY_SERVICE_NAME、 CURLOPT_PROXYHEADER、CURLOPT_SASL_IR、 CURLOPT_SERVICE_NAME、CURLOPT_SSL_ENABLE_ALPN、 CURLOPT_SSL_ENABLE_NPN、CURLOPT_SSL_FALSESTART、 CURLOPT_SSL_VERIFYSTATUS、CURLOPT_STREAM_WEIGHT、 CURLOPT_TCP_FASTOPEN、CURLOPT_TFTP_NO_OPTIONS、 CURLOPT_UNIX_SOCKET_PATH、CURLOPT_XOAUTH2_BEARER、 CURLPROTO_SMB、CURLPROTO_SMBS、 CURLPROXY_HTTP_1_0、CURLSSH_AUTH_AGENT 和 CURLSSLOPT_NO_REVOKE。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open