mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
354 lines
13 KiB
XML
354 lines
13 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: c308ed37a98decb1959ed47dc149a43d6c71ec60 Maintainer: leonardolara Status: ready --><!-- CREDITS: geekcom,vanildosouto,ae,royopa,leonardolara -->
|
||
|
||
<sect1 xml:id="migration74.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<title>Alterações incompatíveis com versões anteriores</title>
|
||
|
||
<sect2 xml:id="migration74.incompatible.core">
|
||
<title>Núcleo do PHP</title>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.non-array-access">
|
||
<title>Acesso em estilo de array em não-array</title>
|
||
|
||
<para>
|
||
Tentar usar valores do tipo <type>null</type>, <type>bool</type>,
|
||
<type>int</type>, <type>float</type> ou <type>resource</type> como um
|
||
array (como <literal>$null["key"]</literal>) agora irá gerar um aviso.
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.get-declared-classes">
|
||
<title>Função <function>get_declared_classes</function></title>
|
||
|
||
<para>
|
||
A função <function>get_declared_classes</function> não retorna mais
|
||
classes anônimas que ainda não foram instanciadas.
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.fn">
|
||
<title>Palavra-chave <literal>fn</literal></title>
|
||
|
||
<para>
|
||
<literal>fn</literal> agora é uma palavra-chave reservada. Em particular,
|
||
ele não pode mais ser usado como um nome de função ou classe.
|
||
Ela ainda pode ser usado como um nome constante de método ou classe.
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.php-tag">
|
||
<title>A tag <literal><?php</literal> no final do arquivo</title>
|
||
|
||
<para>
|
||
<literal><?php</literal> no final do arquivo (sem seguir a nova linha)
|
||
agora será interpretado como uma tag PHP de abertura. Antes, era interpretada
|
||
como uma short open tag seguida por um literal <literal>php</literal> e
|
||
resultava em um erro de sintaxe (com <literal>short_open_tag=1</literal>)
|
||
ou era interpretada como uma string literal <literal><?php</literal>
|
||
(com <literal>short_open_tag=0</literal>).
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.stream-wrappers">
|
||
<title>Empacotadores de Fluxo</title>
|
||
|
||
<para>
|
||
Ao usar include/require em um fluxo,
|
||
<methodname>streamWrapper::stream_set_option</methodname>
|
||
será chamado com a opção <constant>STREAM_OPTION_READ_BUFFER</constant>.
|
||
As implementações personalizadas do empacotador de fluxo podem precisar implementar
|
||
o método <methodname>streamWrapper::stream_set_option</methodname>
|
||
para evitar um aviso (sempre retornando &false; é uma implementação suficiente).
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.serialization">
|
||
<title>Serialização</title>
|
||
|
||
<para>
|
||
O formato <literal>o</literal> de serialização foi removido.
|
||
Como nunca é produzido pelo PHP, isso pode apenas interromper a desserialização de
|
||
strings criadas manualmente.
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.password-algorithm-constants">
|
||
<title>Constantes do algoritmo de senha</title>
|
||
|
||
<para>
|
||
Os identificadores do algoritmo de hash de senha agora são sequências anuláveis
|
||
em vez de números inteiros.
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>
|
||
<constant>PASSWORD_DEFAULT</constant> era um int 1; agora é uma string '2y' (no PHP 7.4.0, 7.4.1 e 7.4.2 era &null;)
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
<constant>PASSWORD_BCRYPT</constant> era um int 1; agora é uma string '2y'
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
<constant>PASSWORD_ARGON2I</constant> era um int 2; agora é uma string 'argon2i'
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
<constant>PASSWORD_ARGON2ID</constant> era um int 3; agora é uma string 'argon2id'
|
||
</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
Aplicações que usam corretamente as constantes PASSWORD_DEFAULT,
|
||
PASSWORD_BCRYPT, PASSWORD_ARGON2I e PASSWORD_ARGON2ID continuarão
|
||
funcionando corretamente.
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.htmlentities">
|
||
<title>Função <function>htmlentities</function></title>
|
||
|
||
<para>
|
||
<function>htmlentities</function> agora emitirá um aviso
|
||
(em vez de um aviso estrito sobre os padrões) se for usado com
|
||
uma codificação para a qual apenas a substituição básica de entidade é suportada;
|
||
nesse caso, é equivalente a<function>htmlspecialchars</function>.
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="migration74.incompatible.core.fread-fwrite">
|
||
<title>Funções <function>fread</function> e <function>fwrite</function></title>
|
||
|
||
<para>
|
||
<function>fread</function> e <function>fwrite</function> agora retornarão
|
||
&false; se a operação falhar.
|
||
Antes uma string vazia ou 0 era retornado.
|
||
EAGAIN/EWOULDBLOCK não são considerados falhas.
|
||
</para>
|
||
<para>
|
||
Essas funções agora também emitem um aviso de falha,
|
||
como ao tentar gravar em um recurso de arquivo somente leitura.
|
||
</para>
|
||
</sect3>
|
||
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.bcmath">
|
||
<title>Funções matemáticas de precisão arbitrária BCMath</title>
|
||
|
||
<para>
|
||
As funções BCMath agora avisam se um número não bem formado é passado, como
|
||
<literal>"32foo"</literal>. O argumento será interpretado como zero, como antes.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.curl">
|
||
<title>CURL</title>
|
||
|
||
<para>
|
||
Tentar serializar uma classe <classname>CURLFile</classname> agora irá
|
||
gerar uma exceção. Antes, a exceção era lançada apenas na desserialização.
|
||
</para>
|
||
<para>
|
||
O uso de <constant>CURLPIPE_HTTP1</constant> está descontinuado, e não é mais
|
||
suportado a partir do cURL 7.62.0.
|
||
</para>
|
||
<para>
|
||
O parâmetro <literal>$version</literal> de <function>curl_version</function>
|
||
está descontinuado. Se qualquer valor diferente do padrão <constant>CURLVERSION_NOW</constant>
|
||
for passado, um aviso será gerado e o parâmetro será ignorado.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.datetime">
|
||
<title>Data e hora</title>
|
||
|
||
<para>
|
||
Chamar a função <function>var_dump</function> ou similar em uma instância de
|
||
<classname>DateTime</classname> ou <classname>DateTimeImmutable</classname>
|
||
não deixará mais propriedades acessíveis no objeto.
|
||
</para>
|
||
<para>
|
||
A comparação de objetos <classname>DateInterval</classname>
|
||
(usando <literal>==</literal>, <literal><</literal>, e assim por diante) agora gera um aviso
|
||
e sempre retorna &false;. Antes todos os objetos <classname>DateInterval</classname>
|
||
eram considerados iguais, a menos que tivessem propriedades.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.intl">
|
||
<title>Intl</title>
|
||
|
||
<para>
|
||
O valor padrão do parâmetro das funções <function>idn_to_ascii</function> e
|
||
<function>idn_to_utf8</function> agora é <constant>INTL_IDNA_VARIANT_UTS46</constant>
|
||
em vez do descontinuado <constant>INTL_IDNA_VARIANT_2003</constant>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.mysqli">
|
||
<title>MySQLi</title>
|
||
|
||
<para>
|
||
A funcionalidade do servidor incorporado foi removida. Foi quebrado desde
|
||
pelo menos o PHP 7.0.
|
||
</para>
|
||
<para>
|
||
A propriedade não documentada <literal>mysqli::$stat</literal> foi removida
|
||
em favor de <methodname>mysqli::stat</methodname>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.openssl">
|
||
<title>OpenSSL</title>
|
||
|
||
<para>
|
||
A função <function>openssl_random_pseudo_bytes</function> agora
|
||
lançará uma exceção em situações de erro, semelhante a <function>random_bytes</function>.
|
||
Em particular, um <classname>Error</classname> será lançado se o número de
|
||
bytes solicitados for menor ou igual a zero, e uma <classname>Exception</classname>
|
||
será lançada se não for possível reunir aleatoriedade suficiente.
|
||
É garantido que o argumento de saída <literal>$crypto_strong</literal> será sempre
|
||
&true; se a função não lançar exceção, portanto, uma verificação explícita não é necessário.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.pcre">
|
||
<title>Expressões regulares (Compatíveis com Perl)</title>
|
||
|
||
<para>
|
||
Quando o modo <constant>PREG_UNMATCHED_AS_NULL</constant> é usado,
|
||
os grupos de captura sem correspondência à direita agora também serão definidos como &null; (ou
|
||
<literal>[null, -1]</literal> se a captura deslocada estiver habilitada).
|
||
Isso significa que o tamanho de <literal>$matches</literal> sempre será o mesmo.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.pdo">
|
||
<title>Objetos de dados PHP</title>
|
||
|
||
<para>
|
||
A tentativa de serializar uma instância <classname>PDO</classname> ou
|
||
<classname>PDOStatement</classname> agora gerará
|
||
uma <classname>Exception</classname> em vez de uma <classname>PDOException</classname>,
|
||
consistente com outras classes internas que não oferecem suporte à serialização.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.reflection">
|
||
<title>Reflection</title>
|
||
|
||
<para>
|
||
Os objetos reflexion agora gerarão uma exceção se for feita
|
||
uma tentativa de serializá-los. A serialização de objetos reflexion nunca
|
||
foi suportada e resultou em objetos reflexions corrompidos. Foi explicitamente
|
||
proibido agora.
|
||
</para>
|
||
|
||
<para>
|
||
Os valores para as constantes das classes <classname>ReflectionClassConstant</classname>,
|
||
<classname>ReflectionMethod</classname> e <classname>ReflectionProperty</classname>
|
||
mudaram.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.spl">
|
||
<title>Biblioteca Padrão PHP (SPL)</title>
|
||
|
||
<para>
|
||
Chamar <function>get_object_vars</function> em uma instância de <classname>ArrayObject</classname>
|
||
agora sempre retornará as propriedades do próprio <classname>ArrayObject</classname>
|
||
(ou de uma sub classe). Antes, ele retornava os valores do
|
||
array/object a menos que a flag <constant>ArrayObject::STD_PROP_LIST</constant>
|
||
fosse especificado.
|
||
</para>
|
||
<para>
|
||
Outras operações afetadas são:
|
||
</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>
|
||
<methodname>ReflectionObject::getProperties</methodname>
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
<function>reset</function>, <function>current</function>, etc.
|
||
Use os métodos de <interfacename>Iterator</interfacename> em seu lugar.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Potencialmente outros trabalhando nas propriedades do objeto como uma lista,
|
||
por exemplo <function>array_walk</function>.
|
||
</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>
|
||
<literal>(array)</literal> casts não são afetadas. Eles continuarão
|
||
retornando o array agrupado, ou as propriedades <classname>ArrayObject</classname>
|
||
dependendo se a flag <constant>ArrayObject::STD_PROP_LIST</constant>
|
||
é usada.
|
||
</para>
|
||
<para>
|
||
<methodname>SplPriorityQueue::setExtractFlags</methodname> lançará uma exceção
|
||
se zero for passado. Antes, isso geraria um erro fatal recuperável
|
||
na próxima operação de extração.
|
||
</para>
|
||
<para>
|
||
<classname>ArrayObject</classname>, <classname>ArrayIterator</classname>,
|
||
<classname>SplDoublyLinkedList</classname> e <classname>SplObjectStorage</classname>
|
||
agora oferecem suporte ao mecanismo <literal>__serialize()</literal> e <literal>__unserialize()</literal>
|
||
além da interface <interfacename>Serializable</interfacename>.
|
||
Isso significa que as payloads de serialização criadas em versões mais antigas do PHP ainda podem ser
|
||
desserializadas, mas as novas payloads criadas pelo PHP 7.4 não serão entendidas pelas versões mais antigas.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.tokenizer">
|
||
<title>Tokenizer</title>
|
||
|
||
<para>
|
||
<function>token_get_all</function> agora emitirá um
|
||
token <constant>T_BAD_CHARACTER</constant> para caracteres
|
||
inesperados em vez de deixar para trás buracos no fluxo de token.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="migration74.incompatible.cookie-decode">
|
||
<title>Incoming Cookies</title>
|
||
|
||
<para>
|
||
A partir do PHP 7.4.11, os <emphasis>nomes</emphasis> dos cookies recebidos não
|
||
são mais decodificados em url por razões de segurança.
|
||
</para>
|
||
</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
|
||
-->
|