Files
archived-doc-pt-br/appendices/migration72/new-features.xml
2025-08-27 14:12:36 -03:00

470 lines
12 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 6d29533483657c036e49edb5ea88c7103d126681 Maintainer: leonardolara Status: ready -->
<sect1 xml:id="migration72.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Novas funcionalidades</title>
<sect2 xml:id="migration72.new-features.object-type">
<title>Novo tipo: object</title>
<para>
Um novo tipo, <type>object</type>, foi introduzido e pode ser usado para
tipagem de parâmetro (contravariante) e tipagem de retorno (covariante) de qualquer
objeto.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
function test(object $obj) : object
{
return new SplQueue();
}
test(new stdClass());
]]>
</programlisting>
</informalexample>
</sect2>
<sect2 xml:id="migration72.new-features.ext-loading-by-name">
<title>Carregamento de extensão por nome</title>
<para>
Extensões compartilhadas não requerem mais que as extensões de arquivo
(<literal>.so</literal> para Unix ou <literal>.dll</literal> para Windows) sejam
especificadas. Isto está habilitado no arquivo php.ini, assim como na função
<function>dl</function>.
</para>
</sect2>
<sect2 xml:id="migration72.new-features.abstract-method-overriding">
<title>Substituição de método abstrato</title>
<para>
Métodos abstratos agora podem ser substituídos quando uma classe abstrata estende
outra classe abstrata.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
abstract class A
{
abstract function test(string $s);
}
abstract class B extends A
{
// substituído - ainda mantendo contravariância para parâmetros e covariância para retorno
abstract function test($s) : int;
}
]]>
</programlisting>
</informalexample>
</sect2>
<sect2 xml:id="migration72.new-features.sodium">
<title><link linkend="book.sodium">Sodium</link> agora é uma extensão do núcleo</title>
<para>
A moderna biblioteca de criptografia Sodium agora se tornou uma extensão do núcleo do PHP.
</para>
<para>
Para uma referência completa da função consulte o capítulo
<link linkend="book.sodium">Sodium</link>.
</para>
</sect2>
<sect2 xml:id="migration72.new-features.pws-hashing-with-argon2">
<title>Hash de senha com Argon2</title>
<para>
Argon2 foi adicionado à <link linkend="book.password">API de hash de senha</link>,
onde as seguintes constantes foram expostas:
</para>
<itemizedlist>
<listitem>
<simpara>
<constant>PASSWORD_ARGON2I</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PASSWORD_ARGON2_DEFAULT_MEMORY_COST</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PASSWORD_ARGON2_DEFAULT_TIME_COST</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PASSWORD_ARGON2_DEFAULT_THREADS</constant>
</simpara>
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration72.new-features.pdo-extended-str-types">
<title>Tipos estendidos de strings para <link linkend="book.pdo">PDO</link></title>
<para>
O tipo string da PDO foi estendido para suportar o tipo de caractere nacional
ao emular preparações. Isto foi feito com as seguintes constantes:
</para>
<itemizedlist>
<listitem>
<simpara>
<constant>PDO::PARAM_STR_NATL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::PARAM_STR_CHAR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::ATTR_DEFAULT_STR_PARAM</constant>
</simpara>
</listitem>
</itemizedlist>
<para>
Estas constantes são utilizadas com a operação binária <literal>OR</literal> entre elas e a constante
<constant>PDO::PARAM_STR</constant>:
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);
]]>
</programlisting>
</informalexample>
</sect2>
<sect2 xml:id="migration72.new-features.additional-emulated-prepares-debugging-info">
<title>Informação adicional de depuração de preparações emuladas para <link linkend="book.pdo">PDO</link></title>
<para>
O método <function>PDOStatement::debugDumpParams</function> foi atualizado
para incluir o SQL enviado ao BD, onde a consulta completa, crua,
(incluindo os marcadores substituídos com seus valores vinculados) será
mostrada. Isto foi adicionado para ajudar na depuração de preparações emuladas (e por isso
só estará disponível se preparações emuladas estiverem habilitadas).
</para>
</sect2>
<sect2 xml:id="migration72.new-features.extended-ops-in-ldap">
<title>Suporte para operações estendidas em <link linkend="book.ldap">LDAP</link></title>
<para>
Suporte para EXOP foi adicionado à extensão LDAP. Isto foi feito pela
exposição das seguintes funções e constantes:
</para>
<itemizedlist>
<listitem>
<simpara>
<function>ldap_parse_exop</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>ldap_exop</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>ldap_exop_passwd</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>ldap_exop_whoami</function>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>LDAP_EXOP_START_TLS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>LDAP_EXOP_MODIFY_PASSWD</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>LDAP_EXOP_REFRESH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>LDAP_EXOP_WHO_AM_I</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>LDAP_EXOP_TURN</constant>
</simpara>
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration72.new-features.addr-info-in-sockets">
<title>Adição de informação de endereço à extensão <link linkend="book.sockets">Sockets</link></title>
<para>
A extensão sockets agora tem a capacidade de procurar por Informação de Endereço, assim
como se conectar, vincular e explicar. As quatro funções a seguir
foram adicionadas para isto:
</para>
<itemizedlist>
<listitem>
<simpara>
<function>socket_addrinfo_lookup</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>socket_addrinfo_connect</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>socket_addrinfo_bind</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>socket_addrinfo_explain</function>
</simpara>
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration72.new-features.param-type-widening">
<title>Ampliação de tipo de parâmetro</title>
<para>
Tipos de parâmetro de métodos substituídos e de implementações de interface
agora podem ser omitidos. Isto ainda está conforme LSP, já que os tipos
de parâmetros são contravariantes.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
interface A
{
public function Test(array $input);
}
class B implements A
{
public function Test($input){} // tipo omitido para $input
}
]]>
</programlisting>
</informalexample>
</sect2>
<sect2 xml:id="migration72.new-features.trailing-comma-in-grouped-namespaces">
<title>Permite-se uma vírgula no final de espaços de nomes agrupados</title>
<para>
Uma vírgula agora pode ser adicionada ao final do grupo na sintaxe 'use' introduzida
no PHP 7.0.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
use Foo\Bar\{
Foo,
Bar,
Baz,
};
]]>
</programlisting>
</informalexample>
</sect2>
<sect2 xml:id="migration72.new-features.proc_nice-windows-support">
<title>Suporte à função <function>proc_nice</function> no Windows</title>
<para>
A função <function>proc_nice</function> agora é suportada no Windows.
</para>
</sect2>
<sect2 xml:id="migration72.new-features.pack-unpack-endian-support">
<title>Suporte à ordem de bytes nas funções <function>pack</function> e <function>unpack</function></title>
<para>
As funções <function>pack</function> e <function>unpack</function> agora suportam
tipos 'float' e 'double' em ambas as ordens de bytes Little Endian e Big Endian.
</para>
</sect2>
<sect2 xml:id="migration72.new-features.exif-features">
<title>Melhorias à extensão <link linkend="book.exif">EXIF</link></title>
<para>
A extensão EXIF foi atualizada para suportar uma faixa de formatos bem maior. Isto
significa que suas etiquetas específicas de formatação agora são adequadamente traduzidas ao analisar
imagens com a função <function>exif_read_data</function>. Os formatos a seguir agora são
suportados:
</para>
<itemizedlist>
<listitem>
<simpara>
Samsung
</simpara>
</listitem>
<listitem>
<simpara>
DJI
</simpara>
</listitem>
<listitem>
<simpara>
Panasonic
</simpara>
</listitem>
<listitem>
<simpara>
Sony
</simpara>
</listitem>
<listitem>
<simpara>
Pentax
</simpara>
</listitem>
<listitem>
<simpara>
Minolta
</simpara>
</listitem>
<listitem>
<simpara>
Sigma/Foveon
</simpara>
</listitem>
<listitem>
<simpara>
AGFA
</simpara>
</listitem>
<listitem>
<simpara>
Kyocera
</simpara>
</listitem>
<listitem>
<simpara>
Ricoh
</simpara>
</listitem>
<listitem>
<simpara>
Epson
</simpara>
</listitem>
</itemizedlist>
<para>
As funções EXIF <function>exif_read_data</function> e <function>exif_thumbnail</function>
agora suportam fluxos como seu primeiro argumento.
</para>
</sect2>
<sect2 xml:id="migration72.new-features.pcre">
<title>Novas funcionalidades em <link linkend="book.pcre">PCRE</link></title>
<itemizedlist>
<listitem>
<simpara>
O modificador <literal>J</literal> para configurar PCRE_DUPNAMES foi adicionado.
</simpara>
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration72.new-features.sqlite3">
<title><link linkend="book.sqlite3">SQLite3</link> permite escrever BLOBs</title>
<para>
<methodname>SQLite3::openBlob</methodname> agora permite abrir campos BLOB fields em
modo de escrita; anteriormente apenas leitura era suportada.
</para>
</sect2>
<sect2 xml:id="migration72.new-features.oci8">
<title>Chamadas TAF (Transparent Application Failover) do <link linkend="book.oci8">Oracle OCI8</link></title>
<para>
Suporte às <link linkend="oci8.taf">chamadas de Falha Transparente de Aplicação do Banco de Dados Oracle</link>
foi adicionado. TAF permite que aplicações OCI8 do PHP OCI8 se
reconectem automaticamente a um banco de dados pré-configurado quando uma conexão
é perdida. O novo suporte à chamada TAF permite que aplicações PHP
monitorem e controlem a reconexão durante a falha.
</para>
</sect2>
<sect2 xml:id="migration72.new-features.zip">
<title>Melhorias à extensão <link linkend="book.zip">ZIP</link></title>
<para>
Suporte foi adicionado a leitura e escrita de arquivos criptografados (requer libzip 1.2.0).
</para>
<para>
A classe <classname>ZipArchive</classname> agora implementa a interface
<interfacename>Countable</interfacename>.
</para>
<para>
O fluxo <literal>zip://</literal> agora aceita uma opção de contexto <literal>'password'</literal>.
</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
-->