initial translation of migration guide to 8.5

This commit is contained in:
Leonardo Lara Rodrigues
2025-11-12 16:32:52 -03:00
parent 2feb4ef2ac
commit 0a8db69b78
7 changed files with 1665 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: leonardolara Status: ready -->
<appendix xml:id="migration85" xmlns="http://docbook.org/ns/docbook">
<title>Migrando do PHP 8.4.x para o PHP 8.5.x</title>
<simpara>
Esta nova versão menor traz várias
<link linkend="migration85.new-features">novas funcionalidades</link> e
<link linkend="migration85.incompatible">algumas incompatibilidades</link>
que devem ser testadas antes de realizar a troca de versões do PHP em
ambientes de produção.
</simpara>
<simpara>
&manual.migration.seealso;
<link linkend="migration71">7.1.x</link>,
<link linkend="migration72">7.2.x</link>,
<link linkend="migration73">7.3.x</link>,
<link linkend="migration74">7.4.x</link>,
<link linkend="migration80">8.0.x</link>,
<link linkend="migration81">8.1.x</link>,
<link linkend="migration82">8.2.x</link>.
<link linkend="migration83">8.3.x</link>.
<link linkend="migration84">8.4.x</link>.
</simpara>
&appendices.migration85.new-features;
&appendices.migration85.new-classes;
&appendices.migration85.new-functions;
&appendices.migration85.constants;
&appendices.migration85.incompatible;
&appendices.migration85.deprecated;
&appendices.migration85.other-changes;
&appendices.migration85.windows-support;
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: leonardolara Status: ready -->
<sect1 xml:id="migration85.constants">
<title>Novas Constantes Globais</title>
<sect2 xml:id="migration85.constants.core">
<title>Núcleo</title>
<simplelist>
<member>
<constant>PHP_BUILD_DATE</constant>
</member>
<member>
<constant>PHP_BUILD_PROVIDER</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.curl">
<title>cURL</title>
<simplelist>
<member>
<constant>CURLINFO_USED_PROXY</constant>
</member>
<member>
<constant>CURLINFO_HTTPAUTH_USED</constant>
</member>
<member>
<constant>CURLINFO_PROXYAUTH_USED</constant>
</member>
<member>
<constant>CURLINFO_CONN_ID</constant>
</member>
<member>
<constant>CURLINFO_QUEUE_TIME_T</constant>
</member>
<member>
<constant>CURLOPT_INFILESIZE_LARGE</constant>
</member>
<member>
<constant>CURLFOLLOW_ALL</constant>
</member>
<member>
<constant>CURLFOLLOW_OBEYCODE</constant>
</member>
<member>
<constant>CURLFOLLOW_FIRSTONLY</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.filter">
<title>Filter</title>
<simplelist>
<member>
<constant>FILTER_THROW_ON_FAILURE</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.intl">
<title>Intl</title>
<simplelist>
<member>
<constant>DECIMAL_COMPACT_SHORT</constant>
</member>
<member>
<constant>DECIMAL_COMPACT_LONG</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.openssl">
<title>OpenSSL</title>
<simplelist>
<member><constant>OPENSSL_PKCS1_PSS_PADDING</constant></member>
<member><constant>PKCS7_NOSMIMECAP</constant></member>
<member><constant>PKCS7_CRLFEOL</constant></member>
<member><constant>PKCS7_NOCRL</constant></member>
<member><constant>PKCS7_NO_DUAL_CONTENT</constant></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.posix">
<title>POSIX</title>
<simplelist>
<member><constant>POSIX_SC_OPEN_MAX</constant></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.sockets">
<title>Sockets</title>
<simplelist>
<member>
<constant>IPPROTO_ICMP</constant>
</member>
<member>
<constant>IPPROTO_ICMPV6</constant>
</member>
<member>
<constant>TCP_FUNCTION_BLK</constant> (somente FreeBSD)
</member>
<member>
<constant>TCP_FUNCTION_ALIAS</constant> (somente FreeBSD)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA</constant> (somente FreeBSD)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA_NODOM</constant> (somente FreeBSD)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA_CURDOM</constant> (somente FreeBSD)
</member>
<member>
<constant>TCP_BBR_ALGORITHM</constant> (somente FreeBSD)
</member>
<member>
<constant>AF_PACKET</constant> (somente Linux)
</member>
<member>
<constant>IP_BINDANY</constant> (somente FreeBSD/NetBSD/OpenBSD)
</member>
<member>
<constant>SO_BUSY_POLL</constant> (somente Linux)
</member>
<member>
<constant>UDP_SEGMENT</constant> (somente Linux)
</member>
<member>
<constant>SHUT_RD</constant>
</member>
<member>
<constant>SHUT_WR</constant>
</member>
<member>
<constant>SHUT_RDWR</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.tokenizer">
<title>Tokenizer</title>
<simplelist>
<member>
<constant>T_VOID_CAST</constant>
</member>
<member>
<constant>T_PIPE</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.standard">
<title>Padrão</title>
<simplelist>
<member>
<constant>IMAGETYPE_SVG</constant>
quando a libxml estiver carregada.
</member>
</simplelist>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,523 @@
<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: 2def8c3cfec11fcc74f153b337301bbc06c16bc9 Maintainer: leonardolara Status: ready -->
<sect1 xml:id="migration85.deprecated">
<title>Recursos Descontinuados</title>
<sect2 xml:id="migration85.deprecated.core">
<title>Núcleo do PHP</title>
<sect3 xml:id="migration85.deprecated.core.changes-to-user-output-handler">
<title>Alterações no manipulador de saída do usuário</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_4 -->
<simpara>
Tentar gerar saída (por exemplo, com <function>echo</function>) dentro
de um manipulador de saída do usuário foi descontinuado.
O aviso de descontinuação ignorará o manipulador que gera a saída para
garantir que ela seja visível; se houver manipuladores de saída aninhados, o próximo
ainda será usado.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.non-canonical-cast-names">
<title>Nomes de conversão não canônicos</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_non-standard_cast_names -->
<simpara>
Nomes de conversão não canônicos <literal>(boolean)</literal>,
<literal>(integer)</literal>, <literal>(double)</literal>,
e <literal>(binary)</literal> foram descontinuados,
use <literal>(bool)</literal>, <literal>(int)</literal>,
<literal>(float)</literal>,e <literal>(string)</literal> respectivamente.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.case-statements-with-semicolon">
<title>Encerrando instruções 'case' com ponto e vírgula</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_semicolon_after_case_in_switch_statement -->
<simpara>
O uso de ponto e vírgula em vez de dois pontos para encerrar
instruções 'case' foi descontinuado.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.the-backtick-operator">
<title>O operador de execução</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_backticks_as_an_alias_for_shell_exec -->
<simpara>
<link linkend="language.operators.execution">O operador de execução</link>
como um sinônimo de <function>shell_exec</function> foi descontinuado.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.return-null-from-debuginfo">
<title>Retornando null de __debugInfo()</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_debuginfo_returning_null -->
<simpara>
Retornar &null; de
<link linkend="language.oop5.magic.debuginfo">__debugInfo()</link>
foi descontinuado. Em vez disso, retorne um array vazio.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.return-memleaks-ini-directive">
<title>Diretiva INI report_memleaks</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_report_memleaks_ini_directive -->
<simpara>
A diretiva INI <link linkend="ini.report-memleaks">report_memleaks</link>
foi descontinuada.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.constant-redeclaration">
<title>Redeclaração de constante</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_constant_redeclaration -->
<simpara>
A redeclaração de constante foi descontinuada.
Observe que isso já gerava aviso e continuará gerando.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.closure-binding-issues">
<title>Problemas de vinculação de Closure</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_closure_binding_issues -->
<para>
Os seguintes problemas de vinculação de Closure, que já emitem um
<constant>E_WARNING</constant>, agora estão descontinuados:
<simplelist>
<member>Vincular uma instância a um Closure estático.</member>
<member>Vincular métodos a objetos que não são instâncias da classe
(ou subclasse) na qual o método está definido.</member>
<member>Desvincular $this de um método.</member>
<member>Desvincular `$this` de um Closure que usa `$this`.</member>
<member>Vincular um Closure ao escopo de uma classe interna.</member>
<member>Revincular o escopo de um Closure criado a partir de uma função ou método.</member>
</simplelist>
</para>
</sect3>
<sect3 xml:id="migration85.deprecated.core.sleep-and-wakeup-magic-methods">
<title>Métodos mágicos __sleep() e __wakeup()</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_sleep_and_wakeup_magic_methods -->
<!-- RFC: https://wiki.php.net/rfc/soft-deprecate-sleep-wakeup -->
<simpara>
Os métodos mágicos <link linkend="object.sleep">__sleep()</link> e
<link linkend="object.wakeup">__wakeup()</link>
foram praticamente descontinuados.
Os métodos mágicos <link linkend="object.serialize">__serialize()</link> e
<link linkend="object.unserialize">__unserialize()</link>
devem ser usados no lugar deles, ou ao mesmo tempo se for requerida
compatibilidade com o PHP 7.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.using-null-as-an-array-offset">
<title>Usando null como um índice de array</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_using_values_null_as_an_array_offset_and_when_calling_array_key_exists -->
<simpara>
Usar &null; como um índice de array ou ao chamar <function>array_key_exists</function>
agora foi descontinuado. Uma string vazia deve ser usada em seu lugar.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.incrementing-non-numeric-strings">
<title>Incrementando strings não numéricas</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#enact_follow-up_phase_of_the_path_to_saner_incrementdecrement_operators_rfc -->
<simpara>
Incrementar strings não numéricas agora foi descontinuado.
Em vez disso, a função <function>str_increment</function> deve ser usada.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.register-argc-argv-directive">
<title>Diretiva INI register_argc_argv</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_register_argc_argv_ini_directive -->
<simpara>
A obtenção de <code>$_SERVER['argc']</code> e <code>$_SERVER['argv']</code>
a partir da string de consulta para SAPIs não-CLI foi descontinuada.
Configure <literal>register_argc_argv=0</literal> e alterne para
<varname>$_GET</varname> ou <code>$_SERVER['QUERY_STRING']</code>
para acessar as informações, após verificar se o uso é seguro.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.deprecated.curl">
<title>cURL</title>
<simpara>
A função <function>curl_close</function> foi descontinuada,
pois os objetos <classname>CurlHandle</classname> são liberados automaticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_curl_close -->
</simpara>
<simpara>
A função <function>curl_share_close</function> foi descontinuada,
pois os objetos <classname>CurlShareHandle</classname> são liberados automaticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_curl_share_close -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.date">
<title>Date</title>
<simpara>
As constantes <constant>DATE_RFC7231</constant> e
<constant>DateTimeInterface::RFC7231</constant> foram descontinuadas.
Isso ocorre porque o fuso horário associado é ignorado e sempre usa GMT.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_date_rfc7231_and_datetimeinterfacerfc7231 -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.fileinfo">
<title>FileInfo</title>
<simpara>
A função <function>finfo_close</function> foi descontinuada.
Os objetos <classname>finfo</classname> são liberados automaticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_finfo_close -->
</simpara>
<simpara>
O parâmetro <parameter>$context</parameter> da
função <function>finfo_buffer</function> foi descontinuado
pois é ignorado.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_context_parameter_for_finfo_buffer -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.gd">
<title>GD</title>
<simpara>
A função <function>imagedestroy</function> foi descontinuada,
pois os objetos <classname>GdImage</classname> são liberados automaticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_imagedestroy -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.hash">
<title>Hash</title>
<simpara>
As constantes <constant>MHASH_<replaceable>*</replaceable></constant> foram
descontinuadas.
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.intl">
<title>Intl</title>
<simpara>
A configuração INI <link linkend="ini.intl.error-level">intl.error_level</link>
foi descontinuada.
Os erros devem ser verificados manualmente ou as exceções devem ser habilitadas
usando a configuração INI
<link linkend="ini.intl.use-exceptions">intl.use_exceptions</link>.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_intlerror_level_ini_setting -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.ldap">
<title>LDAP</title>
<para>
Chamadas e constantes específicas do Oracle Instant Client foram descontinuadas.
Lista de chamadas afetadas:
<simplelist>
<member><function>ldap_connect</function> com suporte para wallet</member>
<member><function>ldap_connect_wallet</function></member>
</simplelist>
Lista de constantes afetadas:
<simplelist>
<member><constant>GSLC_SSL_NO_UATH</constant></member>
<member><constant>GSLC_SSL_ONEWAY_UATH</constant></member>
<member><constant>GSLC_SSL_TWOWAY_UATH</constant></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_building_ext_ldap_against_oracle_ldap -->
</para>
</sect2>
<sect2 xml:id="migration85.deprecated.mysqli">
<title>MySQLi</title>
<simpara>
O sinônimo de função <function>mysqli_execute</function> foi descontinuado.
Use <function>mysqli_stmt_execute</function> no lugar dela.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#formally_deprecate_mysqli_execute -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.openssl">
<title>OpenSSL</title>
<simpara>
O parâmetro <parameter>$key_length</parameter> da
função <function>openssl_pkey_derive</function> foi descontinuado.
Isso ocorre porque ele é ignorado ou trunca a chave, o que pode representar
uma vulnerabilidade de segurança.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_key_length_parameter_of_openssl_pkey_derive -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.pdo">
<title>PDO</title>
<simpara>
O esquema DSN <literal>"uri:"</literal> foi descontinuado devido a preocupações de segurança com
DSNs provenientes de URIs remotas.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_pdo_s_urischeme -->
</simpara>
<para>
Constantes específicas de drivers na classe PDO foram descontinuadas.
Lista das constantes afetadas e suas substituições:
<simplelist>
<member><constant>PDO::DBLIB_ATTR_CONNECTION_TIMEOUT</constant> => <constant>Pdo\Dblib::ATTR_CONNECTION_TIMEOUT</constant></member>
<member><constant>PDO::DBLIB_ATTR_QUERY_TIMEOUT</constant> => <constant>Pdo\Dblib::ATTR_QUERY_TIMEOUT</constant></member>
<member><constant>PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER</constant> => <constant>Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER</constant></member>
<member><constant>PDO::DBLIB_ATTR_VERSION</constant> => <constant>Pdo\Dblib::ATTR_VERSION</constant></member>
<member><constant>PDO::DBLIB_ATTR_TDS_VERSION</constant> => <constant>Pdo\Dblib::ATTR_TDS_VERSION</constant></member>
<member><constant>PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS</constant> => <constant>Pdo\Dblib::ATTR_SKIP_EMPTY_ROWSETS</constant></member>
<member><constant>PDO::DBLIB_ATTR_DATETIME_CONVERT</constant> => <constant>Pdo\Dblib::ATTR_DATETIME_CONVERT</constant></member>
<member><constant>PDO::FB_ATTR_DATE_FORMAT</constant> => <constant>Pdo\Firebird::ATTR_DATE_FORMAT</constant></member>
<member><constant>PDO::FB_ATTR_TIME_FORMAT</constant> => <constant>Pdo\Firebird::ATTR_TIME_FORMAT</constant></member>
<member><constant>PDO::FB_ATTR_TIMESTAMP_FORMAT</constant> => <constant>Pdo\Firebird::ATTR_TIMESTAMP_FORMAT</constant></member>
<member><constant>PDO::MYSQL_ATTR_USE_BUFFERED_QUERY</constant> => <constant>Pdo\Mysql::ATTR_USE_BUFFERED_QUERY</constant></member>
<member><constant>PDO::MYSQL_ATTR_LOCAL_INFILE</constant> => <constant>Pdo\Mysql::ATTR_LOCAL_INFILE</constant></member>
<member><constant>PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY</constant> => <constant>Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY</constant></member>
<member><constant>PDO::MYSQL_ATTR_INIT_COMMAND</constant> => <constant>Pdo\Mysql::ATTR_INIT_COMMAND</constant></member>
<member><constant>PDO::MYSQL_ATTR_MAX_BUFFER_SIZE</constant> => <constant>Pdo\Mysql::ATTR_MAX_BUFFER_SIZE</constant></member>
<member><constant>PDO::MYSQL_ATTR_READ_DEFAULT_FILE</constant> => <constant>Pdo\Mysql::ATTR_READ_DEFAULT_FILE</constant></member>
<member><constant>PDO::MYSQL_ATTR_READ_DEFAULT_GROUP</constant> => <constant>Pdo\Mysql::ATTR_READ_DEFAULT_GROUP</constant></member>
<member><constant>PDO::MYSQL_ATTR_COMPRESS</constant> => <constant>Pdo\Mysql::ATTR_COMPRESS</constant></member>
<member><constant>PDO::MYSQL_ATTR_DIRECT_QUERY</constant> => <constant>Pdo\Mysql::ATTR_DIRECT_QUERY</constant></member>
<member><constant>PDO::MYSQL_ATTR_FOUND_ROWS</constant> => <constant>Pdo\Mysql::ATTR_FOUND_ROWS</constant></member>
<member><constant>PDO::MYSQL_ATTR_IGNORE_SPACE</constant> => <constant>Pdo\Mysql::ATTR_IGNORE_SPACE</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_KEY</constant> => <constant>Pdo\Mysql::ATTR_SSL_KEY</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_CERT</constant> => <constant>Pdo\Mysql::ATTR_SSL_CERT</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_CA</constant> => <constant>Pdo\Mysql::ATTR_SSL_CA</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_CAPATH</constant> => <constant>Pdo\Mysql::ATTR_SSL_CAPATH</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_CIPHER</constant> => <constant>Pdo\Mysql::ATTR_SSL_CIPHER</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT</constant> => <constant>Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT</constant></member>
<member><constant>PDO::MYSQL_ATTR_SERVER_PUBLIC_KEY</constant> => <constant>Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY</constant></member>
<member><constant>PDO::MYSQL_ATTR_MULTI_STATEMENTS</constant> => <constant>Pdo\Mysql::ATTR_MULTI_STATEMENTS</constant></member>
<member><constant>PDO::ODBC_ATTR_USE_CURSOR_LIBRARY</constant> => <constant>Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY</constant></member>
<member><constant>PDO::ODBC_ATTR_ASSUME_UTF8</constant> => <constant>Pdo\Odbc::ATTR_ASSUME_UTF8</constant></member>
<member><constant>PDO::ODBC_SQL_USE_IF_NEEDED</constant> => <constant>Pdo\Odbc::SQL_USE_IF_NEEDED</constant></member>
<member><constant>PDO::ODBC_SQL_USE_DRIVER</constant> => <constant>Pdo\Odbc::SQL_USE_DRIVER</constant></member>
<member><constant>PDO::ODBC_SQL_USE_ODBC</constant> => <constant>Pdo\Odbc::SQL_USE_ODBC</constant></member>
<member><constant>PDO::PGSQL_ATTR_DISABLE_PREPARES</constant> => <constant>Pdo\Pgsql::ATTR_DISABLE_PREPARES</constant></member>
<member><constant>PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES</constant> => <constant>Pdo\Sqlite::ATTR_EXTENDED_RESULT_CODES</constant></member>
<member><constant>PDO::SQLITE_ATTR_OPEN_FLAGS</constant> => <constant>Pdo\Sqlite::OPEN_FLAGS</constant></member>
<member><constant>PDO::SQLITE_ATTR_READONLY_STATEMENT</constant> => <constant>Pdo\Sqlite::ATTR_READONLY_STATEMENT</constant></member>
<member><constant>PDO::SQLITE_DETERMINISTIC</constant> => <constant>Pdo\Sqlite::DETERMINISTIC</constant></member>
<member><constant>PDO::SQLITE_OPEN_READONLY</constant> => <constant>Pdo\Sqlite::OPEN_READONLY</constant></member>
<member><constant>PDO::SQLITE_OPEN_READWRITE</constant> => <constant>Pdo\Sqlite::OPEN_READWRITE</constant></member>
<member><constant>PDO::SQLITE_OPEN_CREATE</constant> => <constant>Pdo\Sqlite::OPEN_CREATE</constant></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_building_ext_ldap_against_oracle_ldap -->
</para>
<para>
Métodos específicos de drivers na classe PDO foram descontinuados.
Lista dos métodos afetados e suas substituições:
<simplelist>
<member><methodname>PDO::pgsqlCopyFromArray</methodname> => <methodname>Pdo\Pgsql::copyFromArray</methodname></member>
<member><methodname>PDO::pgsqlCopyFromFile</methodname> => <methodname>Pdo\Pgsql::copyFromFile</methodname></member>
<member><methodname>PDO::pgsqlCopyToArray</methodname> => <methodname>Pdo\Pgsql::copyToArray</methodname></member>
<member><methodname>PDO::pgsqlCopyToFile</methodname> => <methodname>Pdo\Pgsql::copyToFile</methodname></member>
<member><methodname>PDO::pgsqlGetNotify</methodname> => <methodname>Pdo\Pgsql::getNotify</methodname></member>
<member><methodname>PDO::pgsqlGetPid</methodname> => <methodname>Pdo\Pgsql::getPid</methodname></member>
<member><methodname>PDO::pgsqlLOBCreate</methodname> => <methodname>Pdo\Pgsql::lobCreate</methodname></member>
<member><methodname>PDO::pgsqlLOBOpen</methodname> => <methodname>Pdo\Pgsql::lobOpen</methodname></member>
<member><methodname>PDO::pgsqlLOBUnlink</methodname> => <methodname>Pdo\Pgsql::lobUnlink</methodname></member>
<member><methodname>PDO::sqliteCreateAggregate</methodname> => <methodname>Pdo\Sqlite::createAggregate</methodname></member>
<member><methodname>PDO::sqliteCreateCollation</methodname> => <methodname>Pdo\Sqlite::createCollation</methodname></member>
<member><methodname>PDO::sqliteCreateFunction</methodname> => <methodname>Pdo\Sqlite::createFunction</methodname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_driver_specific_pdo_constants_and_methods -->
</para>
</sect2>
<sect2 xml:id="migration85.deprecated.pdo-pgsql">
<title>PDO_PGSQL</title>
<para>
As constantes relacionadas aos estados de transação foram descontinuadas, pois esse recurso não está disponível no PDO:
<simplelist>
<member><constant>PDO::PGSQL_TRANSACTION_IDLE</constant></member>
<member><constant>PDO::PGSQL_TRANSACTION_ACTIVE</constant></member>
<member><constant>PDO::PGSQL_TRANSACTION_INTRANS</constant></member>
<member><constant>PDO::PGSQL_TRANSACTION_INERROR</constant></member>
<member><constant>PDO::PGSQL_TRANSACTION_UNKNOWN</constant></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#extpdo_deprecations -->
</para>
</sect2>
<sect2 xml:id="migration85.deprecated.reflection">
<title>Reflection</title>
<simpara>
Os métodos <code>setAccessible()</code> de vários objetos Reflection foram
descontinuados, pois não têm mais efeito.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionsetaccessible -->
</simpara>
<simpara>
Chamar <methodname>ReflectionClass::getConstant</methodname> para constantes
que não existem foi descontinuado.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionclassgetconstant_for_missing_constants -->
</simpara>
<simpara>
Chamar <methodname>ReflectionProperty::getDefaultValue</methodname> para
propriedades sem valores padrão foi descontinuado.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionpropertygetdefaultvalue_for_properties_without_default_values -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.spl">
<title>SPL</title>
<simpara>
O processo de cancelar o registro de todos os autocarregadores passando a
função <function>spl_autoload_call</function> como argumento de retorno para
<function>spl_autoload_unregister</function> foi descontinuado.
Em vez disso, se necessário, deve-se iterar sobre o valor de retorno de
<function>spl_autoload_functions</function> e chamar
<function>spl_autoload_unregister</function> em cada valor.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_spl_autoload_call_to_spl_autoload_unregister -->
</simpara>
<simpara>
Os métodos <methodname>SplObjectStorage::contains</methodname>,
<methodname>SplObjectStorage::attach</methodname> e
<methodname>SplObjectStorage::detach</methodname> foram descontinuados
em favor de <methodname>SplObjectStorage::offsetExists</methodname>,
<methodname>SplObjectStorage::offsetSet</methodname> e
<methodname>SplObjectStorage::offsetUnset</methodname> respectivamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_splobjectstoragecontains_splobjectstorageattach_and_splobjectstoragedetach -->
</simpara>
<simpara>
Usar <classname>ArrayObject</classname> e
<classname>ArrayIterator</classname> com objetos foi descontinuado.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_arrayobject_and_arrayiterator_with_objects -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.standard">
<title>Standard</title>
<simpara>
A função sinônimo <function>socket_set_timeout</function> foi descontinuada.
Use <function>stream_set_timeout</function> em seu lugar.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#formally_deprecate_socket_set_timeout -->
</simpara>
<simpara>
Passar &null; para <function>readdir</function>,
<function>rewinddir</function> e <function>closedir</function>
para usar o último diretório aberto foi descontinuado.
Em vez disso, forneça o último diretório aberto explicitamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_null_to_readdir_rewinddir_and_closedir -->
</simpara>
<simpara>
Passar inteiros fora do intervalo <literal>[0, 255]</literal> para <function>chr</function>
agora foi descontinuado.
Isso ocorre porque um byte só pode armazenar um valor dentro desse intervalo.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_integers_outside_the_interval_0_255_to_chr -->
</simpara>
<simpara>
Passar uma string que não seja um único byte para <function>ord</function>
agora foi descontinuado, isso indica um bug.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_string_which_are_not_one_byte_long_to_ord -->
</simpara>
<simpara>
A variável predefinida localmente
<link linkend="reserved.variables.httpresponseheader">$http_response_header</link>
foi descontinuada. Em vez disso, deve-se chamar a função
<function>http_get_last_response_headers</function>.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_http_response_header_predefined_variable -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.xml">
<title>XML</title>
<simpara>
A função <function>xml_parser_free</function> foi descontinuada,
pois os objetos <classname>XMLParser</classname> são liberados automaticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_xml_parser_free -->
</simpara>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,587 @@
<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: leonardolara Status: ready -->
<sect1 xml:id="migration85.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Alterações Incompatíveis com Versões Anteriores</title>
<sect2 xml:id="migration85.incompatible.core">
<title>Núcleo do PHP</title>
<sect3 xml:id="migration85.incompatible.core.array-callable-alias">
<title>Sinônimos <literal>"array"</literal> e <literal>"callable"</literal></title>
<simpara>
Não é mais possível usar <literal>"array"</literal>
e <literal>"callable"</literal> como sinônimos de nomes de classe
em <function>class_alias</function>.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.loosely-comparing-object">
<title>Comparação livre de objetos incomparáveis</title>
<simpara>
A comparação livre de objetos incomparáveis (por exemplo, enumerações,
<classname>CurlHandle</classname> e outras classes internas) com booleanos
era inconsistente anteriormente. Se comparado a um booleano literal
<code>$object == true</code>, se comportaria da mesma forma que
<code>(bool)$object</code>. Se comparado a um valor estaticamente desconhecido
<code>$object == $true</code>, sempre retornaria &false;.
Este comportamento foi consolidado para sempre seguir o de
<code>(bool)$object</code>.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.gc-collect-cycles">
<title>Valor de retorno de gc_collect_cycles()</title>
<simpara>
O valor de retorno de <function>gc_collect_cycles</function> não mais inclui
strings e recursos que foram indiretamente coletados através dos ciclos.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.substitute-final-subclasses">
<title>Substituição da palavra-chave 'static' em subclasses finais</title>
<simpara>
Agora é permitido substituir <type>static</type> por <type>self</type> ou pelo nome concreto da classe
em subclasses finais.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.tick-handlers">
<title>Manipuladores de tiques</title>
<simpara>
Os manipuladores de tiques agora são desativados após todas as funções de desligamento
e destrutores terem sido executadas e os manipuladores de saída terem sido limpos.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.trait-binding">
<title>Vinculação de Traits</title>
<simpara>
Traits agora são vinculados antes da classe superior. Esta é uma alteração comportamental
sutil mas deve corresponder de forma mais precisa às expectativas do usuário.
<!-- https://github.com/php/php-src/pull/15878 -->
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.errors-compilation-and-linking">
<title>Erros durante a compilação e à vinculação de classes</title>
<simpara>
Os erros emitidos durante a compilação e a vinculação de classes agora são sempre atrasados
e tratados após a compilação ou a vinculação de classes. Erros fatais emitidos durante
a compilação ou a vinculação de classes fazem com que quaisquer erros atrasados sejam tratados
imediatamente, sem chamar manipuladores de erros definidos pelo usuário.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.exception-by-userdefined-handler">
<title>Exceções lançadas pelo manipulador de erros definido pelo usuário</title>
<simpara>
Exceções lançadas por manipuladores de erros definidos pelo usuário ao lidar com a vinculação de classes
Erros não são mais promovidos a erros fatais e não impedem a vinculação.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.attribute-during-compilation">
<title>Erro de aplicação de atributo durante a compilação</title>
<simpara>
Aplicar <code>#[\Attribute]</code> a uma classe abstrata, enumeração, interface ou trait
gera um erro durante a compilação. Anteriormente, o atributo podia ser
adicionado, mas quando <methodname>ReflectionAttribute::newInstance</methodname>
era chamado, um erro era lançado.
O erro pode ser adiado da compilação para o momento de execução usando o novo
atributo <code>#[\DelayedTargetValidation]</code>.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.disable-ini-setting">
<title>Configuração INI disable_classes</title>
<simpara>
A configuração INI <link linkend="ini.disable-classes">disable_classes</link>
foi removida porque faz com que várias premissas do mecanismo sejam quebradas.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#remove_disable_classes_ini_setting -->
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.destruct-non-array-values">
<title>Destruindo valores não-array</title>
<simpara>
Destruir valores não-array (diferentes de &null;) usando <literal>[]</literal> ou <function>list</function> agora
emite um alerta.
<!-- RFC: https://wiki.php.net/rfc/warnings-php-8-5#destructuring_non-array_values -->
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.warning-related-to-cast">
<title>Avisos relacionados à conversão</title>
<simpara>
Agora, um aviso é emitido ao converter floats (ou strings que se parecem com
floats) para inteiros se eles não puderem ser representados como um. Isso afeta conversões explícitas
implícitas para inteiro.
<!-- RFC: https://wiki.php.net/rfc/warnings-php-8-5#casting_out_of_range_floats_to_int -->
</simpara>
<simpara>
Agora, um aviso é emitido ao converter NAN para outros tipos.
<!-- RFC: https://wiki.php.net/rfc/warnings-php-8-5#coercing_nan_to_other_types -->
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.incompatible.bzip2">
<title>Bzip2</title>
<simpara>
<function>bzcompress</function> agora lança um <classname>ValueError</classname>
quando <parameter>$block_size</parameter> não estiver entre 1 e 9.
</simpara>
<simpara>
<function>bzcompress</function> agora lança um <classname>ValueError</classname>
quando <parameter>$work_factor</parameter> não estiver entre 0 e 250.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.dom">
<title>DOM</title>
<simpara>
Clonar um <classname>DOMNamedNodeMap</classname>,
<classname>DOMNodeList</classname>, <classname>Dom\NamedNodeMap</classname>,
<classname>Dom\NodeList</classname>, <classname>Dom\HTMLCollection</classname>,
e <classname>Dom\DtdNamedNodeMap</classname> agora falha.
Isto nunca realmente resultou em um objeto funcional, portanto nenhum impacto é esperado.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.fileinfo">
<title>FileInfo</title>
<simpara>
<function>finfo_file</function> e <methodname>finfo::file</methodname>
agora lançam um <exceptionname>ValueError</exceptionname> em vez de um
<exceptionname>TypeError</exceptionname> quando <parameter>$filename</parameter>
contiver bytes NUL.
Isso alinha o tipo de erro lançado para ser consistente com o restante da
linguagem.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.intl">
<title>Intl</title>
<simpara>
A extensão agora requer pelo menos a ICU 57.1.
</simpara>
<simpara>
<methodname>IntlDateFormatter::setTimeZone</methodname>/<function>datefmt_set_timezone</function>
agora lança um <exceptionname>IntlException</exceptionname> nas falhas de classes ou
clones sem inicialização.
</simpara>
<simpara>
Todos os métodos de <classname>Locale</classname> agora lançam um
<exceptionname>ValueError</exceptionname> quando o argumento de localidade contiver bytes NUL.
</simpara>
<simpara>
O comportamento de <constant>Collator::SORT_REGULAR</constant> em relação
à manipulação de strings numéricas agora é alinhado com o comportamento de
<constant>SORT_REGULAR</constant> na extensão padrão.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.ldap">
<title>LDAP</title>
<simpara>
<function>ldap_get_option</function> e <function>ldap_set_option</function>
agora lançam um <exceptionname>ValueError</exceptionname> quando uma opção inválida é passada.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.mbstring">
<title>MBString</title>
<simpara>
As tabelas de dados do Unicode foram atualizadas para Unicode 17.0.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.mysqli">
<title>MySQLi</title>
<simpara>
Chamar o construtor mysqli em um objeto já construído
não é mais possível e lança um <exceptionname>Error</exceptionname>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.odbc">
<title>ODBC</title>
<simpara>
O ODBC agora pressupõe que pelo menos a funcionalidade ODBC 3.5 esteja disponível.
A definição ODBCVER e os sinalizadores do sistema de compilação para controlá-la foram removidos.
</simpara>
<simpara>
O ODBC não possui mais opções de compilação para compilar com drivers específicos (exceto
para DB2) e remove casos especiais para esses drivers. É altamente
recomendado o uso de um gerenciador de drivers como o iODBC ou o unixODBC em sistemas não Windows.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.opcache">
<title>Opcache</title>
<simpara>
A extensão Opcache agora está sempre integrada ao binário do PHP e está sempre
carregada.
As diretivas INI <link linkend="ini.opcache.enable">opcache.enable</link>
e <link linkend="ini.opcache.enable-cli">opcache.enable_cli</link> ainda são
respeitadas.
</simpara>
<simpara>
As opções de configuração <option role="configure">--enable-opcache</option>/<option role="configure">--disable-opcache</option>
foram removidas e a compilação não produz mais os objetos <filename>opcache.so</filename>
ou <filename>php_opcache.dll</filename>.
</simpara>
<simpara>
O uso de diretivas INI <literal>zend_extension=opcache.so</literal> ou
<literal>zend_extension=php_opcache.dll</literal>
emitirá um aviso.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pcntl">
<title>PCNTL</title>
<simpara>
<function>pcntl_exec</function> agora lança um <exceptionname>ValueError</exceptionname>
quando as entradas do parâmetro <parameter>$args</parameter> contiver bytes NUL.
</simpara>
<simpara>
<function>pcntl_exec</function> agora lança um <exceptionname>ValueError</exceptionname>
quando as entradas ou chaves do parâmetro <parameter>$env_vars</parameter>
contiver bytes NUL.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pcre">
<title>PCRE</title>
<simpara>
A extensão foi compilada sem a opção de compilação semi-obsoleta
PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK.
<!-- https://github.com/PCRE2Project/pcre2/issues/736#issuecomment-2754024651 -->
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo">
<title>PDO</title>
<simpara>
Os argumentos do construtor definidos em conjunto com
<constant>PDO::FETCH_CLASS</constant> agora seguem a semântica usual do CUFA
(<function>call_user_func_array</function>).
Isso significa que as chaves de string se comportarão como um argumento nomeado.
Além disso, o encapsulamento automático para argumentos por valor passados para um parâmetro por referência
foi removido, e o aviso usual <constant>E_WARNING</constant>
sobre isso agora é emitido.
Para passar uma variável por referência para um argumento do construtor, use a atribuição geral
de referência de valor de array: <code>$ctor_args = [&amp;$valByRef]</code>.
</simpara>
<simpara>
Tentar chamar <methodname>PDOStatement::setFetchMode</methodname> durante
uma chamada para <methodname>PDO::fetch</methodname>,
<methodname>PDO::fetchObject</methodname>,
<methodname>PDO::fetchAll</methodname>, por exemplo, usando truques como
passar o objeto de instrução como um argumento do construtor ao buscar em um
objeto, agora lançará um <exceptionname>Error</exceptionname>.
</simpara>
<simpara>
Os valores das constantes <constant>PDO::FETCH_GROUP</constant>,
<constant>PDO::FETCH_UNIQUE</constant>,
<constant>PDO::FETCH_CLASSTYPE</constant>,
<constant>PDO::FETCH_PROPS_LATE</constant> e
<constant>PDO::FETCH_SERIALIZE</constant> foram alterados.
</simpara>
<simpara>
Agora, uma exceção <exceptionname>ValueError</exceptionname> é lançada se
<constant>PDO::FETCH_PROPS_LATE</constant> for usado com um modo de busca
diferente de <constant>PDO::FETCH_CLASS</constant>, consistente com
outras opções de busca.
</simpara>
<simpara>
Agora, uma exceção <exceptionname>ValueError</exceptionname> é lançada se
<constant>PDO::FETCH_INTO</constant> for usada como modo de busca em
<methodname>PDO::fetchAll</methodname>,
similar a <constant>PDO::FETCH_LAZY</constant>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo-firebird">
<title>PDO_FIREBIRD</title>
<simpara>
Agora, um <exceptionname>ValueError</exceptionname> é lançado ao tentar definir um cursor
com um nome muito longo em um <classname>PDOStatement</classname> resultante do
driver Firebird.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo-sqlite">
<title>PDO_SQLITE</title>
<simpara>
O SQLite <methodname>PDO::quote</methodname> agora lançará uma exceção
ou emitirá um aviso, dependendo do modo de erro, se a string contiver
um byte nulo.
</simpara>
<simpara>
<methodname>PDO::sqliteCreateCollation</methodname> agora lançará uma
exceção se a função de retorno tiver o tipo de retorno errado, tornando-o mais
alinhado com o comportamento de <methodname>Pdo\Sqlite::createCollation</methodname>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.posix">
<title>POSIX</title>
<simpara>
<function>posix_kill</function> agora lança um
<exceptionname>ValueError</exceptionname> quando o argumento process_id é
menor ou maior do que o suportado pela plataforma (intervalo de inteiro com sinal
ou de longo), <function>posix_setpgid</function> agora lança um
<exceptionname>ValueError</exceptionname> quando o process_id ou
o process_group_id é menor que zero ou maior do que o suportado pela
plataforma.
</simpara>
<simpara>
<function>posix_setrlimit</function> agora lança um
<exceptionname>ValueError</exceptionname> quando os argumentos hard_limit ou
soft_limit forem menores que -1 ou se soft_limit for maior que
hard_limit.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.reflection">
<title>Reflection</title>
<simpara>
<methodname>ReflectionAttribute::newInstance</methodname> agora pode lançar
erros para atributos internos se o atributo foi aplicado em um alvo inválido
e o erro foi atrasado do tempo de compilação para o tempo de execução por meio do atributo
#[\DelayedTargetValidation].
<!-- RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute -->
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.session">
<title>Session</title>
<simpara>
A tentativa de gravar dados de sessão onde <varname>$_SESSION</varname> tem uma chave
contendo o caractere pipe (<literal>|</literal>) agora emitirá um aviso
em vez de falhar silenciosamente.
</simpara>
<simpara>
<function>session_start</function> é mais rigorosa em relação ao argumento 'options'.
Agora, ela lança um <exceptionname>ValueError</exceptionname> se
o array não for um hashmap, ou um <exceptionname>TypeError</exceptionname>
se o valor read_and_close não for um tipo válido compatível com int.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.simplexml">
<title>SimpleXML</title>
<simpara>
Passar uma expressão XPath que retorna algo diferente de um conjunto de nós
para <methodname>SimpleXMLElement::xpath</methodname> agora emitirá um aviso
e retornará &false;, em vez de falhar silenciosamente e retornar um array vazio.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.snmp">
<title>SNMP</title>
<simpara>
<function>snmpget</function>,
<function>snmpset</function>,
<function>snmp2_get</function>,
<function>snmp2_set</function>,
<function>snmp3_get</function>,
<function>snmp3_set</function>
e <methodname>SNMP::__construct</methodname> lançam um
<exceptionname>ValueError</exceptionname> quando o nome do host
é muito grande, contém algum byte nulo ou se a porta fornecida
for negativa ou maior que 65535, os valores de tempo limite e tentativas
são menores que -1 ou muito grandes.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.soap">
<title>SOAP</title>
<simpara>
<methodname>SoapClient::__doRequest</methodname> agora aceita um novo parâmetro
opcional <parameter>$uriParserClass</parameter> que aceita
argumentos de string ou &null;.
&null; representa o método original baseado em (<function>parse_url</function>),
enquanto os novos backends serão usados ao passar
<classname>Uri\Rfc3986\Uri</classname> ou <classname>Uri\WhatWg\Url</classname>.
<!-- RFC: https://wiki.php.net/rfc/url_parsing_api#plugability -->
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.sockets">
<title>Sockets</title>
<simpara>
<function>socket_create_listen</function>,
<function>socket_bind</function> e <function>socket_sendto</function>
agora lançam um <exceptionname>ValueError</exceptionname> se a porta for menor
que 0 ou maior que 65535, e também se alguma das entradas da matriz hints for
indexada numericamente.
</simpara>
<simpara>
<function>socket_addrinfo_lookup</function> agora lança um
<exceptionname>TypeError</exceptionname> se algum dos valores de dicas não puder
ser convertido para inteiro e pode lançar um <exceptionname>ValueError</exceptionname> se
algum desses valores estourar.
</simpara>
<simpara>
<function>socket_set_option</function> com as opções
<constant>MCAST_LEAVE_GROUP</constant>/<constant>MCAST_LEAVE_SOURCE_GROUP</constant>
agora lança uma exceção se o valor não for um objeto ou um array válido.
</simpara>
<simpara>
<function>socket_set_option</function> com contexto multicast agora lança um
<exceptionname>ValueError</exceptionname> quando o socket criado não é da família
<constant>AF_INET</constant>/<constant>AF_INET6</constant>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.spl">
<title>SPL</title>
<simpara>
<classname>ArrayObject</classname> não aceita mais enumerações, pois modificar as propriedades
<property>$name</property> ou <property>$value</property> pode quebrar
as premissas do mecanismo.
</simpara>
<simpara>
O parâmetro de <methodname>SplFileObject::fwrite</methodname>
<parameter>$length</parameter> agora aceita valores nulos.
O valor padrão foi alterado de <literal>0</literal> para &null;.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.standard">
<title>Standard</title>
<simpara>
O uso de uma função da família printf com um formatador que não especificava a
precisão anteriormente redefinia incorretamente a precisão em vez de tratá-la
como uma precisão de 0.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.tidy">
<title>Tidy</title>
<simpara>
<methodname>tidy::__construct</methodname>,
<methodname>tidy::parseFile</methodname>,
<methodname>tidy::parseString</methodname> agora lançam um
<exceptionname>ValueError</exceptionname> se a configuração contiver um
valor inválido ou tentar definir uma entrada interna somente leitura,
e um <exceptionname>TypeError</exceptionname> se uma chave de configuração não for uma
string.
</simpara>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: leonardolara Status: ready -->
<sect1 xml:id="migration85.new-classes" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Novas Classes e Interfaces</title>
<sect2 xml:id="migration85.new-classes.core">
<title>Núcleo</title>
<simplelist>
<member><classname>NoDiscard</classname></member>
<member><classname>DelayedTargetValidation</classname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/marking_return_value_as_important -->
<!-- RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute -->
</sect2>
<sect2 xml:id="migration85.new-classes.curl">
<title>Curl</title>
<simplelist>
<member><classname>CurlSharePersistentHandle</classname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/curl_share_persistence_improvement -->
</sect2>
<sect2 xml:id="migration85.new-classes.filter">
<title>Filter</title>
<simplelist>
<member><classname>Filter\FilterException</classname></member>
<member><classname>Filter\FilterFailedException</classname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/filter_throw_on_failure -->
</sect2>
<sect2 xml:id="migration85.new-classes.uri">
<title>URI</title>
<simplelist>
<member><classname>Uri\UriException</classname></member>
<member><classname>Uri\InvalidUriException</classname></member>
<member><classname>Uri\UriComparisonMode</classname></member>
<member><classname>Uri\Rfc3986\Uri</classname></member>
<member><classname>Uri\WhatWg\InvalidUrlException</classname></member>
<member><classname>Uri\WhatWg\UrlValidationErrorType</classname></member>
<member><classname>Uri\WhatWg\UrlValidationError</classname></member>
<member><classname>Uri\WhatWg\Url</classname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/url_parsing_api -->
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: leonardolara Status: ready -->
<sect1 xml:id="migration85.new-functions">
<title>Novas Funções</title>
<sect2 xml:id="migration85.new-functions.core">
<title>Núcleo</title>
<simplelist>
<!-- RFC: https://wiki.php.net/rfc/get-error-exception-handler -->
<!-- RFC: https://wiki.php.net/rfc/get-error-exception-handler -->
<member><function>get_error_handler</function></member>
<member><function>get_exception_handler</function></member>
<member>
<methodname>Closure::getCurrent</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.curl">
<title>Curl</title>
<simplelist>
<!-- RFC: https://wiki.php.net/rfc/curl_share_persistence_improvement -->
<member><function>curl_multi_get_handles</function></member>
<member><function>curl_share_init_persistent</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.dom">
<title>DOM</title>
<simplelist>
<member>
<methodname>Dom\Element::getElementsByClassName</methodname>
</member>
<member>
<methodname>Dom\Element::insertAdjacentHTML</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.enchant">
<title>Enchant</title>
<simplelist>
<member><function>enchant_dict_remove_from_session</function></member>
<member><function>enchant_dict_remove</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.intl">
<title>Intl</title>
<simplelist>
<member>
<methodname>Locale::isRightToLeft</methodname>
</member>
<member><function>locale_is_right_to_left</function></member>
<!-- RFC: https://wiki.php.net/rfc/grapheme_levenshtein -->
<member><function>grapheme_levenshtein</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.opcache">
<title>Opcache</title>
<simplelist>
<member><function>opcache_is_script_cached_in_file_cache</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.pdo-sqlite">
<title>PDO_SQLITE</title>
<simplelist>
<member>
<methodname>Pdo\Sqlite::setAuthorizer</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.pgsql">
<title>PGSQL</title>
<simplelist>
<member><function>pg_close_stmt</function></member>
<member><function>pg_service</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.reflection">
<title>Reflection</title>
<simplelist>
<member>
<methodname>ReflectionConstant::getFileName</methodname>
</member>
<member>
<methodname>ReflectionConstant::getExtension</methodname>
</member>
<member>
<methodname>ReflectionConstant::getExtensionName</methodname>
</member>
<!-- RFC: https://wiki.php.net/rfc/attributes-on-constants -->
<member>
<methodname>ReflectionConstant::getAttributes</methodname>
</member>
<member>
<methodname>ReflectionProperty::getMangledName</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.sqlite">
<title>Sqlite</title>
<simplelist>
<member>
<methodname>Sqlite3Stmt::busy</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.standard">
<title>Standard</title>
<simplelist>
<!-- RFC: https://wiki.php.net/rfc/array_first_last -->
<member><function>array_first</function></member>
<member><function>array_last</function></member>
</simplelist>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: leonardolara Status: ready -->
<sect1 xml:id="migration85.windows-support">
<title>Suporte ao Windows</title>
<sect2 xml:id="migration85.windows-support.core">
<title>Núcleo</title>
<simpara>
As variáveis de configuração <constant>PHP_VERSION</constant>,
<constant>PHP_MINOR_VERSION</constant> e
<constant>PHP_RELEASE_VERSION</constant> agora são sempre números.
Anteriormente, elas eram strings para compilações do buildconf.
</simpara>
<simpara>
As compilações do <command>phpize</command> agora refletem a árvore de origem no
diretório de compilação (como já funcionava para compilações dentro da árvore); algumas compilações de extensão
(especialmente ao usar Makefile.frag.w32) podem precisar de ajustes.
</simpara>
<simpara>
<option role="configure">--enable-sanitizer</option> agora é compatível
com compilações do MSVC. Isso habilita as asserções ASan e de depuração e é compatível
a partir do MSVC 16.10 e do Windows 10.
</simpara>
<simpara>
A opção de configuração <option role="configure">--with-uncritical-warn-choke</option>
para compilações do clang não é mais suportada.
Em vez disso, selecione os avisos a serem suprimidos por meio de CFLAGS.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.com">
<title>COM</title>
<simpara>
A extensão agora é compilada de forma compartilhada por padrão; anteriormente, o padrão era uma extensão
estática, embora os binários oficiais do Windows compilassem uma extensão
compartilhada.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.ffi">
<title>FFI</title>
<simpara>
Não é mais necessário especificar a biblioteca ao usar
<methodname>FFI::cdef</methodname> e <methodname>FFI::load</methodname>.
No entanto, esse recurso de conveniência não deve ser usado em produção.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.streams">
<title>Streams</title>
<simpara>
Se apenas fluxos de pipe estiverem contidos no array <parameter>$read</parameter>
e os arrays <parameter>$write</parameter> e
<parameter>$except</parameter> estiverem vazios,
<function>stream_select</function> agora se comporta de forma semelhante aos sistemas POSIX,
ou seja, a função só retorna se pelo menos um pipe estiver pronto para leitura,
ou após o tempo limite expirar.
Anteriormente, <function>stream_select</function> retornava imediatamente,
relatando todos os fluxos como prontos para leitura.
</simpara>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->