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

contributors($setup);

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

 <div class="sect2" id="migration73.new-features.core">
  <h3 class="title">Núcleo do PHP</h3>

  <div class="sect3" id="migration73.new-features.core.heredoc">
   <h4 class="title">Sintaxe Heredoc e Nowdoc mais flexível</h4>

   <p class="para">
    O marcador de fechamento para strings doc não precisa mais ser seguido por
    ponto-e-vírgula ou nova linha. Além disso, o marcador de fechamento pode ser recuado, caso em
    que o recuo será retirado de todas as linhas na string do documento.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.destruct-reference">
   <h4 class="title">A desconstrução de array suporta atribuições de referência</h4>

   <p class="para">
    A desconstrução de array agora suporta atribuições de referência usando a sintaxe
    <code class="literal">[&amp;$a, [$b, &amp;$c]] = $d</code> O mesmo também é suportado
    para <span class="function"><a href="function.list.php" class="function">list()</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.instanceof-literals">
   <h4 class="title">O operador Instanceof aceita Literais</h4>

   <p class="para">
    <code class="literal">instanceof</code> agora permite literais como o primeiro operando, caso em
    que o resultado é sempre <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.compileerror">
   <h4 class="title">Exceção CompileError em vez de alguns Erros de Compilação</h4>

   <p class="para">
    Uma nova exceção <span class="classname"><a href="class.compileerror.php" class="classname">CompileError</a></span> foi adicionada, da
    qual <span class="classname"><a href="class.parseerror.php" class="classname">ParseError</a></span> herda. Um pequeno número de
    erros de compilação agora lançará um <span class="classname"><a href="class.compileerror.php" class="classname">CompileError</a></span>
    em vez de gerar um fatal error. Atualmente, isso afeta apenas erros de compilação
    que podem ser lançados por <span class="function"><a href="function.token-get-all.php" class="function">token_get_all()</a></span> no modo
    <strong><code><a href="tokenizer.constants.php#constant.token-parse">TOKEN_PARSE</a></code></strong>, mas mais erros podem ser convertidos
    no futuro.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.trailing-commas">
   <h4 class="title">Vírgulas à direita são permitidas em chamadas</h4>

   <p class="para">
    Agora são permitidas vírgulas à direita em chamadas de função e método.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.argon2id">
   <h4 class="title">Suporte Argon2id</h4>

   <p class="para">
    O argumento de configuração <strong class="option configure">--with-password-argon2[=dir]</strong>
    agora fornece suporte para os hashes Argon2i e Argon2id nas funções
    <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span>, <span class="function"><a href="function.password-verify.php" class="function">password_verify()</a></span>,
    <span class="function"><a href="function.password-get-info.php" class="function">password_get_info()</a></span> e
    <span class="function"><a href="function.password-needs-rehash.php" class="function">password_needs_rehash()</a></span>. As senhas podem ser hash e
    verificadas usando a constante <strong><code><a href="password.constants.php#constant.password-argon2id">PASSWORD_ARGON2ID</a></code></strong>.
    O suporte para Argon2i e Argon2id nas funções <span class="function"><strong>password_*()</strong></span>
    agora requer que o PHP seja vinculado à biblioteca de referência libargon2 ≥
    20161029.
   </p>
  </div>

 </div>

 <div class="sect2" id="migration73.new-features.fpm">
  <h3 class="title">FastCGI Process Manager</h3>

  <p class="para">
   Novas opções foram adicionadas para personalizar o log do FPM:
   <dl>
    
     <dt><code class="literal">log_limit</code></dt>
     <dd>
      <span class="simpara">
       Esta opção global pode ser usada para definir o limite de log para a
       linha registrada, o que permite registrar mensagens com mais de 1024 caracteres
       sem quebrar. Ele também corrige vários problemas de empacotamento.
      </span>
     </dd>
    
    
     <dt><code class="literal">log_buffering</code></dt>
     <dd>
      <span class="simpara">
       Esta opção global permite um registro experimental sem buffer extra.
      </span>
     </dd>
    
    
     <dt><code class="literal">decorate_workers_output</code></dt>
     <dd>
      <span class="simpara">
       Esta opção de pool permite desativar a decoração de saída para a saída dos workers
       quando <code class="literal">catch_workers_output</code> estiver ativado.
      </span>
     </dd>
    
   </dl>
  </p>
 </div>

 <div class="sect2" id="migration73.new-features.bc">
  <h3 class="title">Funções BC Math</h3>

  <p class="para">
   <span class="function"><a href="function.bcscale.php" class="function">bcscale()</a></span> agora também pode ser usado como getter para
   recuperar a escala atual em uso.
  </p>
 </div>

 <div class="sect2" id="migration73.new-features.ldap">
  <h3 class="title">Lightweight Directory Access Protocol</h3>

  <p class="para">
   Suporte completo para controles LDAP foi adicionado às funções de consulta <a href="book.ldap.php" class="link">LDAP</a> e
   <span class="function"><a href="function.ldap-parse-result.php" class="function">ldap_parse_result()</a></span>:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Um parâmetro <code class="literal">$controls</code> para enviar controles para
      o servidor em <span class="function"><a href="function.ldap-add.php" class="function">ldap_add()</a></span>,
      <span class="function"><a href="function.ldap-mod-replace.php" class="function">ldap_mod_replace()</a></span>, <span class="function"><a href="function.ldap-mod-add.php" class="function">ldap_mod_add()</a></span>,
      <span class="function"><a href="function.ldap-mod-del.php" class="function">ldap_mod_del()</a></span>, <span class="function"><a href="function.ldap-rename.php" class="function">ldap_rename()</a></span>,
      <span class="function"><a href="function.ldap-compare.php" class="function">ldap_compare()</a></span>, <span class="function"><a href="function.ldap-delete.php" class="function">ldap_delete()</a></span>,
      <span class="function"><a href="function.ldap-modify-batch.php" class="function">ldap_modify_batch()</a></span>,
      <span class="function"><a href="function.ldap-search.php" class="function">ldap_search()</a></span>, <span class="function"><a href="function.ldap-list.php" class="function">ldap_list()</a></span> e
      <span class="function"><a href="function.ldap-read.php" class="function">ldap_read()</a></span> foi adicionado.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      O parâmetro de saída <code class="literal">$controls</code> para obter controles do servidor em
      <span class="function"><a href="function.ldap-parse-result.php" class="function">ldap_parse_result()</a></span> foi adicionado.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Suporte para <strong><code><a href="ldap.constants.php#constant.ldap-opt-server-controls">LDAP_OPT_SERVER_CONTROLS</a></code></strong> e
      <strong><code><a href="ldap.constants.php#constant.ldap-opt-client-controls">LDAP_OPT_CLIENT_CONTROLS</a></code></strong> em
      <span class="function"><a href="function.ldap-get-option.php" class="function">ldap_get_option()</a></span> e
      <span class="function"><a href="function.ldap-set-option.php" class="function">ldap_set_option()</a></span> foi corrigido.
     </span>
    </li>
   </ul>
  </p>
 </div>

 <div class="sect2" id="migration73.new-features.mbstring">
  <h3 class="title">Functions Multibyte String</h3>

  <div class="sect3" id="migration73.new-features.mbstring.case-mapping-folding">
   <h4 class="title">Suporte completo para Case-Mapping e Case-Folding</h4>

   <p class="para">
    Foi adicionado suporte para mapeamento completo de case-mapping e case-folding. Ao contrário do
    case-mapping simples, o case-mapping completo pode alterar o comprimento da string. Por
    exemplo:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />mb_strtoupper</span><span style="color: #007700">(</span><span style="color: #DD0000">"Straße"</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// Produces STRAßE on PHP 7.2<br />// Produces STRASSE on PHP 7.3<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    Os diferentes modos de mapeamento e folding modes estão disponíveis através de
    <span class="function"><a href="function.mb-convert-case.php" class="function">mb_convert_case()</a></span>:
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-lower">MB_CASE_LOWER</a></code></strong> (usado por <span class="function"><a href="function.mb-strtolower.php" class="function">mb_strtolower()</a></span>)
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-upper">MB_CASE_UPPER</a></code></strong> (usado por <span class="function"><a href="function.mb-strtoupper.php" class="function">mb_strtoupper()</a></span>)
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-title">MB_CASE_TITLE</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-fold">MB_CASE_FOLD</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-lower-simple">MB_CASE_LOWER_SIMPLE</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-upper-simple">MB_CASE_UPPER_SIMPLE</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-title-simple">MB_CASE_TITLE_SIMPLE</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-fold-simple">MB_CASE_FOLD_SIMPLE</a></code></strong> (usado por operações Case-Insensitive)
      </span>
     </li>
    </ul>
    Somente o mapeamento de caso completo incondicional e agnóstico de idioma é executado.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.case-insensitive-ops">
   <h4 class="title">As operações de string Case-Insensitive usam Case-Folding</h4>

   <p class="para">
    As operações de string que não diferenciam maiúsculas de minúsculas agora usam case-folding em vez de
    case- mapping durante as comparações. Isso significa que mais caracteres serão
    considerados (sem distinção entre maiúsculas e minúsculas) iguais agora.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.mb-case-title">
   <h4 class="title">MB_CASE_TITLE executa conversão de Title-Case</h4>

   <p class="para">
    <span class="function"><a href="function.mb-convert-case.php" class="function">mb_convert_case()</a></span> com <strong><code><a href="mbstring.constants.php#constant.mb-case-title">MB_CASE_TITLE</a></code></strong>
    agora executa conversão de maiúsculas e minúsculas com base nas propriedades Unicode
    derivadas de Cased e CaseIgnorable. Em particular, isso também melhora o tratamento de
    aspas e apóstrofos.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.ucd11">
   <h4 class="title">Support Unicode 11</h4>

   <p class="para">
    As tabelas de dados <a href="book.mbstring.php" class="link">Multibyte String</a> foram
    atualizadas para Unicode 11.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.long-strings">
   <h4 class="title">Suporte Long String</h4>

   <p class="para">
    As <a href="ref.mbstring.php" class="link">funções Multibyte String Functions</a> agora
    suportam corretamente strings maiores que 2 GB.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.performance">
   <h4 class="title">Melhorias de desempenho</h4>

   <p class="para">
    O desempenho da extensão <a href="book.mbstring.php" class="link">Multibyte String</a>
    foi significativamente melhorado em todos os aspectos. As maiores
    melhorias estão nas funções de conversão de caso.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.named-captures">
   <h4 class="title">Suporte a Capturas Nomeadas</h4>

   <p class="para">
    As funções <code class="literal">mb_ereg_*</code> agora suportam capturas nomeadas.
    Funções de correspondência como <span class="function"><a href="function.mb-ereg.php" class="function">mb_ereg()</a></span> agora retornarão capturas
    nomeadas usando o número do grupo e o nome, semelhante ao PCRE:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />mb_ereg</span><span style="color: #007700">(</span><span style="color: #DD0000">'(?&lt;word&gt;\w+)'</span><span style="color: #007700">, </span><span style="color: #DD0000">'国'</span><span style="color: #007700">, </span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// =&gt; [0 =&gt; "国", 1 =&gt; "国", "word" =&gt; "国"];<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    Além disso, <span class="function"><a href="function.mb-ereg-replace.php" class="function">mb_ereg_replace()</a></span> agora suporta as
    notações <code class="code">\k&lt;&gt;</code> e <code class="code">\k&#039;&#039;</code> para fazer referência a capturas
    nomeadas na string de substituição:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />mb_ereg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'\s*(?&lt;word&gt;\w+)\s*'</span><span style="color: #007700">, </span><span style="color: #DD0000">"_\k&lt;word&gt;_\k'word'_"</span><span style="color: #007700">, </span><span style="color: #DD0000">' foo '</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// =&gt; "_foo_foo_"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    <code class="code">\k&lt;&gt;</code> e <code class="code">\k&#039;&#039;</code> também podem ser usados para referências
    numeradas, que também funcionam com números de grupos maiores que 9.
   </p>
  </div>

 </div>

 <div class="sect2" id="migration73.new-features.realine">
  <h3 class="title">Readline</h3>

  <p class="para">
   O suporte para as opções <code class="literal">completion_append_character</code> e
   <code class="literal">completion_suppress_append</code> foi adicionado a
   <span class="function"><a href="function.readline-info.php" class="function">readline_info()</a></span>. Essas opções só estão disponíveis se o PHP
   estiver vinculado a libreadline (ao invés de libedit).
  </p>
 </div>

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