Files
archived-doc-pt-br/appendices/migration81/deprecated.xml
2025-05-31 11:15:10 -03:00

369 lines
11 KiB
XML

<?xml version="1.0" encoding="utf-8"?> <!-- EN-Revision: f164f8c8627d55910084c94e1dcea93b4a57c4a3 Maintainer: leonardolara Status: ready --><!-- CREDITS: lhsazevedo,ae,leonardolara -->
<sect1 xml:id="migration81.deprecated">
<title>Funcionalidades descontinuadas</title>
<sect2 xml:id="migration81.deprecated.core">
<title>Núcleo do PHP</title>
<sect3 xml:id="migration81.deprecated.core.serialize-interface">
<title>
Implementar <interfacename>Serializable</interfacename> sem
<function>__serialize</function> e <function>__unserialize</function>
</title>
<para>
Apenas os novos métodos devem ser implementados, se nenhum suporte para PHP
anterior à versão 7.4 for fornecido, ou ambos devem ser implementados.
</para>
</sect3>
<sect3 xml:id="migration81.deprecated.core.null-not-nullable-internal">
<title>Passar &null; para parâmetros não não-anuláveis de funções embutidas</title>
<para>
Tipos escalares para funções embutidas são anuláveis por padrão.
Esse comportamento está descontinuado para alinhar com o comportamento de funções definidas
pelo usuário, onde tipos escalares precisam ser explicitamente marcados como anuláveis.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
var_dump(str_contains("foobar", null));
// Deprecated: Passing null to parameter #2 ($needle) of type string
// is deprecated
?>
]]>
</programlisting>
</informalexample>
</para>
</sect3>
<sect3 xml:id="migration81.deprecated.core.implicit-float-conversion">
<title>Conversões &float; para &integer; incompatíveis implícitas</title>
<para>
A conversão implícita de &float; para &integer; que
leva a uma perda de precisão agora está descontinuada.
Isso afeta chaves de &array;, Declarações do tipo &integer; no modo coercitivo,
e operadores trabalhando em &integer;s.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$a = [];
$a[15.5]; // descontinuado, pois o valor da chave perde o componente de 0.5
$a[15.0]; // ok, pois 15.0 == 15
?>
]]>
</programlisting>
</informalexample>
</para>
</sect3>
<sect3 xml:id="migration81.deprecated.core.static-trait">
<title>Chamar o elemento <modifier>static</modifier> em um trait</title>
<para>
Chamar um método <modifier>static</modifier>, ou acessar uma
propriedade <modifier>static</modifier> diretamente em um trait está descontinuado.
Métodos e propriedades estáticos devem ser acessados apenas em uma classe usando o trait.
</para>
</sect3>
<sect3 xml:id="migration81.deprecated.core.magic-sleep">
<title>Retornar um não-&array; da <function>__sleep</function></title>
<para>
Retornar um valor que não é um &array; da
<link linkend="object.sleep">__sleep()</link> agora gera um diagnóstico.
</para>
</sect3>
<sect3 xml:id="migration81.deprecated.core.void-by-ref">
<title>Retornar por referência de uma função <type>void</type></title>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
function &test(): void {}
?>
]]>
</programlisting>
</informalexample>
Essa função é contraditória, e já emite o seguinte
<constant>E_NOTICE</constant> quando chamada:
<literal>Only variable references should be returned by reference</literal>.
</para>
</sect3>
<sect3 xml:id="migration81.deprecated.core.autovivification-false">
<title>Autovivificação a partir de &false;</title>
<para>
Autovivificação é o processo de criar um novo &array; ao
acrescentar um valor.
Autovivificação é proibida a partir de valores escalares, &false;, no entanto
era uma exceção. Isso está descontinuado agora.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$arr = false;
$arr[] = 2; // descontinuado
?>
]]>
</programlisting>
</informalexample>
</para>
<note>
<para>
Autovivificação a partir de &null; e valores não indefinidos ainda é permitida:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// A partir de indefinido
$arr[] = 'some value';
$arr['doesNotExist'][] = 2;
// A partir de null
$arr = null;
$arr[] = 2;
?>
]]>
</programlisting>
</informalexample>
</para>
</note>
</sect3>
</sect2>
<sect2 xml:id="migration81.deprecated.ctype">
<title>ctype</title>
<sect3 xml:id="migration81.deprecated.ctype.nonstring-arguments">
<title>Verificar argumentos não-string</title>
<para>
Passar um argumento não-string está descontinuado.
No futuro, o argumento será interpretado como uma string em vez
de um codepoint ASCII.
Dependendo do comportamento pretendido, o argumento deve ser
convertido para &string; ou uma chamada explícita para
<function>chr</function> deve ser feita.
Todas as funções <literal>ctype_*()</literal> são afetadas.
</para>
</sect3>
</sect2>
<sect2 xml:id="migration81.deprecated.date">
<title>Data</title>
<para>
<function>date_sunrise</function> e <function>date_sunset</function>
foram descontinuadas em favor de <function>date_sun_info</function>.
</para>
<para>
<function>strptime</function> foi descontinuada.
Use <function>date_parse_from_format</function> em vez dela (para análise independente de localidade),
ou <methodname>IntlDateFormatter::parse</methodname> (para análise dependente de localidade).
</para>
<para>
<function>strftime</function> e <function>gmstrftime</function> foram descontinuadas.
Em vez delas, use <function>date</function> (para formatação independente de localidade),
ou <methodname>IntlDateFormatter::format</methodname> (para formatação dependente de localidade).
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.filter">
<title>Filtros</title>
<para>
Os filtros <constant>FILTER_SANITIZE_STRING</constant> e
<constant>FILTER_SANITIZE_STRIPPED</constant> estão descontinuados.
</para>
<para>
A diretiva INI <link linkend="ini.filter.default">filter.default</link>
está descontinuada.
<!-- TODO Check that filter.default_flags -->
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.gd">
<title>GD</title>
<para>
O <parameter>num_points</parameter> da <function>imagepolygon</function>,
<function>imageopenpolygon</function> e <function>imagefilledpolygon</function>
foi descontinuado.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.hash">
<title>Hash</title>
<para>
A <function>mhash</function>,
<function>mhash_keygen_s2k</function>,
<function>mhash_count</function>,
<function>mhash_get_block_size</function>,
e <function>mhash_get_hash_name</function> foram descontinuadas.
Use as funções <literal>hash_*()</literal> em vez delas.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.imap">
<title>IMAP</title>
<para>
A constante <constant>NIL</constant> foi descontinuada.
Use <literal>0</literal> em vez dela.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.intl">
<title>Intl</title>
<para>
Chamar <methodname>IntlCalendar::roll</methodname> com um
argumento &boolean; está descontinuado.
Use <literal>1</literal> e <literal>-1</literal> em vez de
&true; e &false; respectivamente.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.mbstring">
<title>Multibyte String</title>
<para>
Chamar <function>mb_check_encoding</function> sem argumentos
está descontinuado.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.mysqli">
<title>MySQLi</title>
<para>
A propriedade <property>mysqli_driver::$driver_version</property>
foi descontinuada.
Ela era sem sentido e desatualizada, use <constant>PHP_VERSION_ID</constant>
em vez dela.
</para>
<para>
Chamar <methodname>mysqli::get_client_info</methodname> ou
<function>mysqli_get_client_info</function> com o
argumento <parameter>mysqli</parameter> foi descontinuado.
Chame <function>mysqli_get_client_info</function> sem argumentos
para obter a informação de versão da biblioteca cliente.
</para>
<para>
O método <methodname>mysqli::init</methodname> foi descontinuado.
Substitua chamadas para <methodname>parent::init</methodname> por
<methodname>parent::__construct</methodname>.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.oci8">
<title>OCI8</title>
<para>
A diretiva INI <link linkend="ini.oci8.old-oci-close-semantics">oci8.old_oci_close_semantics</link>
está descontinuada.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.odbc">
<title>ODBC</title>
<para>
<function>odbc_result_all</function> foi descontinuada.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.pdo">
<title>PDO</title>
<para>
O modo de busca <constant>PDO::FETCH_SERIALIZE</constant> foi descontinuado.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.pgsql">
<title>PgSQL</title>
<para>
Não passar o argumento de conexão para todas as funções <literal>pgsql_*()</literal>
foi descontinuado.
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.soap">
<title>SOAP</title>
<para>
A opção <literal>ssl_method</literal> do
<methodname>SoapClient::__construct</methodname> foi descontinuada
em favor das opções de contexto de fluxo SSL.
<!-- The direct equivalent would be
crypto_method, but min_proto_version/max_proto_version are recommended
instead. -->
</para>
</sect2>
<sect2 xml:id="migration81.deprecated.standard">
<title>Biblioteca Padrão</title>
<para>
Chamar <function>key</function>, <function>current</function>,
<function>next</function>, <function>prev</function>,
<function>reset</function>, ou <function>end</function>
em &object;s está descontinuado.
Primeiro converta o &object; para um &array; utilizando <function>get_mangled_object_vars</function>,
ou utilize os métodos fornecidos por uma classe que implemente
<interfacename>Iterator</interfacename>, como por exemplo <classname>ArrayIterator</classname>.
</para>
<para>
A diretiva INI <link linkend="ini.auto-detect-line-endings">auto_detect_line_endings</link>
está descontinuada.
Se necessário, em vez dela, lide com quebras de linha <literal>"\r"</literal> manualmente.
</para>
<para>
As constantes <constant>FILE_BINARY</constant> e
<constant>FILE_TEXT</constant> foram descontinuadas.
Elas nunca tiveram nenhum efeito.
</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
-->