<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration72.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'migration72.new-features.php',
    1 => 'Novas funcionalidades',
    2 => 'Novas funcionalidades',
  ),
  'up' => 
  array (
    0 => 'migration72.php',
    1 => 'Migrando do PHP 7.1.x para o PHP 7.2.x',
  ),
  'prev' => 
  array (
    0 => 'migration72.php',
    1 => 'Migrando do PHP 7.1.x para o PHP 7.2.x',
  ),
  'next' => 
  array (
    0 => 'migration72.new-functions.php',
    1 => 'Novas fun&ccedil;&otilde;es',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'appendices/migration72/new-features.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration72.new-features" class="sect1">
 <h2 class="title">Novas funcionalidades</h2>

 <div class="sect2" id="migration72.new-features.object-type">
  <h3 class="title">Novo tipo: object</h3>

  <p class="para">
   Um novo tipo, <span class="type"><a href="language.types.object.php" class="type object">object</a></span>, foi introduzido e pode ser usado para
   tipagem de parâmetro (contravariante) e tipagem de retorno (covariante) de qualquer
   objeto.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">object $obj</span><span style="color: #007700">) : </span><span style="color: #0000BB">object<br /></span><span style="color: #007700">{<br />    return new </span><span style="color: #0000BB">SplQueue</span><span style="color: #007700">();<br />}<br /><br /></span><span style="color: #0000BB">test</span><span style="color: #007700">(new </span><span style="color: #0000BB">stdClass</span><span style="color: #007700">());</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration72.new-features.ext-loading-by-name">
  <h3 class="title">Carregamento de extensão por nome</h3>

  <p class="para">
   Extensões compartilhadas não requerem mais que as extensões de arquivo
   (<code class="literal">.so</code> para Unix ou <code class="literal">.dll</code> para Windows) sejam
   especificadas. Isto está habilitado no arquivo php.ini, assim como na função
   <span class="function"><a href="function.dl.php" class="function">dl()</a></span>.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.abstract-method-overriding">
  <h3 class="title">Substituição de método abstrato</h3>

  <p class="para">
   Métodos abstratos agora podem ser substituídos quando uma classe abstrata estende
   outra classe abstrata.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">abstract class </span><span style="color: #0000BB">A<br /></span><span style="color: #007700">{<br />    abstract function </span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">string $s</span><span style="color: #007700">);<br />}<br />abstract class </span><span style="color: #0000BB">B </span><span style="color: #007700">extends </span><span style="color: #0000BB">A<br /></span><span style="color: #007700">{<br />    </span><span style="color: #FF8000">// substituído - ainda mantendo contravariância para parâmetros e covariância para retorno<br />    </span><span style="color: #007700">abstract function </span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">$s</span><span style="color: #007700">) : </span><span style="color: #0000BB">int</span><span style="color: #007700">;<br />}</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration72.new-features.sodium">
  <h3 class="title"><a href="book.sodium.php" class="link">Sodium</a> agora é uma extensão do núcleo</h3>

  <p class="para">
   A moderna biblioteca de criptografia Sodium agora se tornou uma extensão do núcleo do PHP.
  </p>
  <p class="para">
   Para uma referência completa da função consulte o capítulo
   <a href="book.sodium.php" class="link">Sodium</a>.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.pws-hashing-with-argon2">
  <h3 class="title">Hash de senha com Argon2</h3>

  <p class="para">
   Argon2 foi adicionado à <a href="book.password.php" class="link">API de hash de senha</a>,
   onde as seguintes constantes foram expostas:
  </p>

  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="password.constants.php#constant.password-argon2i">PASSWORD_ARGON2I</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="password.constants.php#constant.password-argon2-default-memory-cost">PASSWORD_ARGON2_DEFAULT_MEMORY_COST</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="password.constants.php#constant.password-argon2-default-time-cost">PASSWORD_ARGON2_DEFAULT_TIME_COST</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="password.constants.php#constant.password-argon2-default-threads">PASSWORD_ARGON2_DEFAULT_THREADS</a></code></strong>
    </span>
   </li>
  </ul>
 </div>

 <div class="sect2" id="migration72.new-features.pdo-extended-str-types">
  <h3 class="title">Tipos estendidos de strings para <a href="book.pdo.php" class="link">PDO</a></h3>

  <p class="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:
  </p>

  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="pdo.constants.php#pdo.constants.param-str-natl">PDO::PARAM_STR_NATL</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="pdo.constants.php#pdo.constants.param-str-char">PDO::PARAM_STR_CHAR</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="pdo.constants.php#pdo.constants.attr-default-str-param">PDO::ATTR_DEFAULT_STR_PARAM</a></code></strong>
    </span>
   </li>
  </ul>

  <p class="para">
   Estas constantes são utilizadas com a operação binária <code class="literal">OR</code> entre elas e a constante
   <strong><code><a href="pdo.constants.php#pdo.constants.param-str">PDO::PARAM_STR</a></code></strong>:
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">quote</span><span style="color: #007700">(</span><span style="color: #DD0000">'über'</span><span style="color: #007700">, </span><span style="color: #0000BB">PDO</span><span style="color: #007700">::</span><span style="color: #0000BB">PARAM_STR </span><span style="color: #007700">| </span><span style="color: #0000BB">PDO</span><span style="color: #007700">::</span><span style="color: #0000BB">PARAM_STR_NATL</span><span style="color: #007700">);</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration72.new-features.additional-emulated-prepares-debugging-info">
  <h3 class="title">Informação adicional de depuração de preparações emuladas para <a href="book.pdo.php" class="link">PDO</a></h3>

  <p class="para">
   O método <span class="function"><a href="pdostatement.debugdumpparams.php" class="function">PDOStatement::debugDumpParams()</a></span> 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).
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.extended-ops-in-ldap">
  <h3 class="title">Suporte para operações estendidas em <a href="book.ldap.php" class="link">LDAP</a></h3>

  <p class="para">
   Suporte para EXOP foi adicionado à extensão LDAP. Isto foi feito pela
   exposição das seguintes funções e constantes:
  </p>

  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.ldap-parse-exop.php" class="function">ldap_parse_exop()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.ldap-exop.php" class="function">ldap_exop()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.ldap-exop-passwd.php" class="function">ldap_exop_passwd()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.ldap-exop-whoami.php" class="function">ldap_exop_whoami()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="ldap.constants.php#constant.ldap-exop-start-tls">LDAP_EXOP_START_TLS</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="ldap.constants.php#constant.ldap-exop-modify-passwd">LDAP_EXOP_MODIFY_PASSWD</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="ldap.constants.php#constant.ldap-exop-refresh">LDAP_EXOP_REFRESH</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="ldap.constants.php#constant.ldap-exop-who-am-i">LDAP_EXOP_WHO_AM_I</a></code></strong>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code><a href="ldap.constants.php#constant.ldap-exop-turn">LDAP_EXOP_TURN</a></code></strong>
    </span>
   </li>
  </ul>
 </div>

 <div class="sect2" id="migration72.new-features.addr-info-in-sockets">
  <h3 class="title">Adição de informação de endereço à extensão <a href="book.sockets.php" class="link">Sockets</a></h3>

  <p class="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:
  </p>

  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.socket-addrinfo-lookup.php" class="function">socket_addrinfo_lookup()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.socket-addrinfo-connect.php" class="function">socket_addrinfo_connect()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.socket-addrinfo-bind.php" class="function">socket_addrinfo_bind()</a></span>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <span class="function"><a href="function.socket-addrinfo-explain.php" class="function">socket_addrinfo_explain()</a></span>
    </span>
   </li>
  </ul>
 </div>

 <div class="sect2" id="migration72.new-features.param-type-widening">
  <h3 class="title">Ampliação de tipo de parâmetro</h3>

  <p class="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.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">interface </span><span style="color: #0000BB">A<br /></span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">Test</span><span style="color: #007700">(array </span><span style="color: #0000BB">$input</span><span style="color: #007700">);<br />}<br /><br />class </span><span style="color: #0000BB">B </span><span style="color: #007700">implements </span><span style="color: #0000BB">A<br /></span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">Test</span><span style="color: #007700">(</span><span style="color: #0000BB">$input</span><span style="color: #007700">){} </span><span style="color: #FF8000">// tipo omitido para $input<br /></span><span style="color: #007700">}</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration72.new-features.trailing-comma-in-grouped-namespaces">
  <h3 class="title">Permite-se uma vírgula no final de espaços de nomes agrupados</h3>

  <p class="para">
   Uma vírgula agora pode ser adicionada ao final do grupo na sintaxe &#039;use&#039; introduzida
   no PHP 7.0.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">use </span><span style="color: #0000BB">Foo\Bar</span><span style="color: #007700">\{<br />    </span><span style="color: #0000BB">Foo</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">Bar</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">Baz</span><span style="color: #007700">,<br />};</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration72.new-features.proc_nice-windows-support">
  <h3 class="title">Suporte à função <span class="function"><a href="function.proc-nice.php" class="function">proc_nice()</a></span> no Windows</h3>

  <p class="para">
   A função <span class="function"><a href="function.proc-nice.php" class="function">proc_nice()</a></span> agora é suportada no Windows.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.pack-unpack-endian-support">
  <h3 class="title">Suporte à ordem de bytes nas funções <span class="function"><a href="function.pack.php" class="function">pack()</a></span> e <span class="function"><a href="function.unpack.php" class="function">unpack()</a></span></h3>

  <p class="para">
   As funções <span class="function"><a href="function.pack.php" class="function">pack()</a></span> e <span class="function"><a href="function.unpack.php" class="function">unpack()</a></span> agora suportam
   tipos &#039;float&#039; e &#039;double&#039; em ambas as ordens de bytes Little Endian e Big Endian.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.exif-features">
  <h3 class="title">Melhorias à extensão <a href="book.exif.php" class="link">EXIF</a></h3>

  <p class="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 <span class="function"><a href="function.exif-read-data.php" class="function">exif_read_data()</a></span>. Os formatos a seguir agora são
   suportados:
  </p>

  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     Samsung
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     DJI
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Panasonic
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Sony
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Pentax
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Minolta
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Sigma/Foveon
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     AGFA
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Kyocera
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Ricoh
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Epson
    </span>
   </li>
  </ul>

  <p class="para">
   As funções EXIF <span class="function"><a href="function.exif-read-data.php" class="function">exif_read_data()</a></span> e <span class="function"><a href="function.exif-thumbnail.php" class="function">exif_thumbnail()</a></span>
   agora suportam fluxos como seu primeiro argumento.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.pcre">
  <h3 class="title">Novas funcionalidades em <a href="book.pcre.php" class="link">PCRE</a></h3>

  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     O modificador <code class="literal">J</code> para configurar PCRE_DUPNAMES foi adicionado.
    </span>
   </li>
  </ul>
 </div>

 <div class="sect2" id="migration72.new-features.sqlite3">
  <h3 class="title"><a href="book.sqlite3.php" class="link">SQLite3</a> permite escrever BLOBs</h3>

  <p class="para">
   <span class="methodname"><a href="sqlite3.openblob.php" class="methodname">SQLite3::openBlob()</a></span> agora permite abrir campos BLOB fields em
   modo de escrita; anteriormente apenas leitura era suportada.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.oci8">
  <h3 class="title">Chamadas TAF (Transparent Application Failover) do <a href="book.oci8.php" class="link">Oracle OCI8</a></h3>

  <p class="para">
   Suporte às <a href="oci8.taf.php" class="link">chamadas de Falha Transparente de Aplicação do Banco de Dados Oracle</a>
   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.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.zip">
  <h3 class="title">Melhorias à extensão <a href="book.zip.php" class="link">ZIP</a></h3>

  <p class="para">
   Suporte foi adicionado a leitura e escrita de arquivos criptografados (requer libzip 1.2.0).
  </p>
  <p class="para">
   A classe <span class="classname"><a href="class.ziparchive.php" class="classname">ZipArchive</a></span> agora implementa a interface
   <span class="interfacename"><a href="class.countable.php" class="interfacename">Countable</a></span>.
  </p>
  <p class="para">
   O fluxo <code class="literal">zip://</code> agora aceita uma opção de contexto <code class="literal">&#039;password&#039;</code>.
  </p>
 </div>

</div><?php manual_footer($setup); ?>