<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration74.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'migration74.deprecated.php',
    1 => 'Recursos descontinuados',
    2 => 'Recursos descontinuados',
  ),
  'up' => 
  array (
    0 => 'migration74.php',
    1 => 'Migrando do PHP 7.3.x para o PHP 7.4.x',
  ),
  'prev' => 
  array (
    0 => 'migration74.incompatible.php',
    1 => 'Altera&ccedil;&otilde;es incompat&iacute;veis com vers&otilde;es anteriores',
  ),
  'next' => 
  array (
    0 => 'migration74.removed-extensions.php',
    1 => 'Extens&otilde;es Removidas',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'appendices/migration74/deprecated.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration74.deprecated" class="sect1">
 <h2 class="title">Recursos descontinuados</h2>

 <div class="sect2" id="migration74.deprecated.core">
  <h3 class="title">Núcleo do PHP</h3>

  <div class="sect3" id="migration74.deprecated.core.nested-ternary">
   <h4 class="title">Operadores ternários aninhados sem parênteses explícitos</h4>

   <p class="para">
    Operações ternárias aninhadas devem usar explicitamente parênteses
    para ditar a ordem das operações. Anteriormente, quando usada
    sem parênteses, a associatividade esquerda não resultava
    no comportamento esperado na maioria dos casos.
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />1 </span><span style="color: #007700">? </span><span style="color: #0000BB">2 </span><span style="color: #007700">: </span><span style="color: #0000BB">3 </span><span style="color: #007700">? </span><span style="color: #0000BB">4 </span><span style="color: #007700">: </span><span style="color: #0000BB">5</span><span style="color: #007700">;   </span><span style="color: #FF8000">// descontinuado<br /></span><span style="color: #007700">(</span><span style="color: #0000BB">1 </span><span style="color: #007700">? </span><span style="color: #0000BB">2 </span><span style="color: #007700">: </span><span style="color: #0000BB">3</span><span style="color: #007700">) ? </span><span style="color: #0000BB">4 </span><span style="color: #007700">: </span><span style="color: #0000BB">5</span><span style="color: #007700">; </span><span style="color: #FF8000">// ok<br /></span><span style="color: #0000BB">1 </span><span style="color: #007700">? </span><span style="color: #0000BB">2 </span><span style="color: #007700">: (</span><span style="color: #0000BB">3 </span><span style="color: #007700">? </span><span style="color: #0000BB">4 </span><span style="color: #007700">: </span><span style="color: #0000BB">5</span><span style="color: #007700">); </span><span style="color: #FF8000">// ok<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Parênteses <em>não</em> são necessários quando organizando um operando interno,
    pois não gera ambiguidade ou problemas de associatividade:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">1 ? 2 ? 3 : 4 : 5 // ok</span></code></div>
     </div>

    </div>
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.array-string-access-curly-brace">
   <h4 class="title">Acesso a valores de array e string usando chaves</h4>

   <p class="para">
    O acesso a valor de string e array usando a sintaxe de chaves está
    descontinuado. Use <code class="literal">$var[$idx]</code> ao invés de
    <code class="literal">$var{$idx}</code>.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.real">
   <h4 class="title">A conversão (real) e a função <span class="function"><a href="function.is-real.php" class="function">is_real()</a></span></h4>

   <p class="para">
    A conversão <code class="literal">(real)</code> está descontinuada,
    use <code class="literal">(float)</code> em seu lugar.
   </p>
   <p class="para">
    A função <span class="function"><a href="function.is-real.php" class="function">is_real()</a></span> também está descontinuada,
    use <span class="function"><a href="function.is-float.php" class="function">is_float()</a></span> em seu lugar.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.unbind-this">
   <h4 class="title">Desvinculando <code class="literal">$this</code> quando <code class="literal">$this</code> é usado</h4>

   <p class="para">
    Desvincular <code class="literal">$this</code> de uma closure não estática
    que usa <code class="literal">$this</code> está descontinuado.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.parent">
   <h4 class="title">A palavra chave <code class="literal">parent</code> sem uma classe parent</h4>

   <p class="para">
    Usar a palavra chave <code class="literal">parent</code> dentro de uma classe sem parent
    está descontinuado, e lançará um erro em tempo de compilação no futuro.
    Atualmente um erro será gerado apenas se/quando o parent for
    acessado em tempo de execução.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.allow-url-include">
   <h4 class="title">A diretiva INI allow_url_include</h4>

   <p class="para">
    A diretiva <a href="filesystem.configuration.php#ini.allow-url-include" class="link">allow_url_include</a>
    está descontinuada. Ativá-la gerará
    um aviso de descontinuação na inicialização.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.invalid-base-characters">
   <h4 class="title">Caracteres inválidos nas funções de conversão de base</h4>

   <p class="para">
    Passar caracteres inválidos para as funções: <span class="function"><a href="function.base-convert.php" class="function">base_convert()</a></span>,
    <span class="function"><a href="function.bindec.php" class="function">bindec()</a></span>, <span class="function"><a href="function.octdec.php" class="function">octdec()</a></span> e
    <span class="function"><a href="function.hexdec.php" class="function">hexdec()</a></span> agora gerará um aviso de descontinuação.
    O resultado ainda será calculado como se os caracteres inválidos não existissem.
    Os espaços em branco à esquerda e à direita, bem como os prefixos do tipo 0x (dependendo da base)
    continuam sendo permitidos.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.array-key-exists-objects">
   <h4 class="title">Usando <span class="function"><a href="function.array-key-exists.php" class="function">array_key_exists()</a></span> em objetos</h4>

   <p class="para">
    O uso de <span class="function"><a href="function.array-key-exists.php" class="function">array_key_exists()</a></span> em objetos está descontinuado.
    Em vez disso <span class="function"><a href="function.isset.php" class="function">isset()</a></span> ou <span class="function"><a href="function.property-exists.php" class="function">property_exists()</a></span>
    deve ser usado.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.magic-quotes-functions">
   <h4 class="title">Funções magic quotes</h4>

   <p class="para">
    As funções <span class="function"><a href="function.get-magic-quotes-gpc.php" class="function">get_magic_quotes_gpc()</a></span> e <span class="function"><a href="function.get-magic-quotes-runtime.php" class="function">get_magic_quotes_runtime()</a></span>
    estão descontinuadas. Elas sempre retornam <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.hebrevc">
   <h4 class="title">Função <span class="function"><a href="function.hebrevc.php" class="function">hebrevc()</a></span></h4>

   <p class="para">
    A função <span class="function"><a href="function.hebrevc.php" class="function">hebrevc()</a></span> está descontinuada.
    Ela pode ser substituída por <code class="literal">nl2br(hebrev($str))</code> ou,
    preferencialmente, pelo uso do suporte Unicode RTL.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.convert-cyr-string">
   <h4 class="title">Função <span class="function"><a href="function.convert-cyr-string.php" class="function">convert_cyr_string()</a></span></h4>

   <p class="para">
    A função <span class="function"><a href="function.convert-cyr-string.php" class="function">convert_cyr_string()</a></span> está descontinuada.
    Pode ser substituída por um dos <span class="function"><strong>mb_convert_string()</strong></span>,
    <span class="function"><a href="function.iconv.php" class="function">iconv()</a></span> ou <span class="classname"><a href="class.uconverter.php" class="classname">UConverter</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.money-format">
   <h4 class="title">Função <span class="function"><a href="function.money-format.php" class="function">money_format()</a></span></h4>

   <p class="para">
    A função <span class="function"><a href="function.money-format.php" class="function">money_format()</a></span> está descontinuada.
    Ela pode ser substituída pela funcionalidade intl <span class="classname"><a href="class.numberformatter.php" class="classname">NumberFormatter</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.ezmlm-hash">
   <h4 class="title">Função <span class="function"><a href="function.ezmlm-hash.php" class="function">ezmlm_hash()</a></span></h4>

   <p class="para">
    A função <span class="function"><a href="function.ezmlm-hash.php" class="function">ezmlm_hash()</a></span> está descontinuada.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.restore-include-path">
   <h4 class="title">Função <span class="function"><a href="function.restore-include-path.php" class="function">restore_include_path()</a></span></h4>

   <p class="para">
    A função <span class="function"><a href="function.restore-include-path.php" class="function">restore_include_path()</a></span> está descontinuada.
    Pode ser substituída por <code class="literal">ini_restore(&#039;include_path&#039;)</code>.
   </p>
  </div>

  <div class="sect3" id="migration74.deprecated.core.implode-reverse-parameters">
   <h4 class="title">Implode com a ordem histórica dos parâmetros</h4>

   <p class="para">
    A passagem de parâmetros para a função <span class="function"><a href="function.implode.php" class="function">implode()</a></span> na ordem reversa
    está descontinuada, use <code class="literal">implode($glue, $parts)</code>
    em vez de <code class="literal">implode($parts, $glue)</code>.
   </p>
  </div>

 </div>

 <div class="sect2" id="migration74.deprecated.com">
  <h3 class="title">COM</h3>

  <p class="para">
   A importação de bibliotecas de tipos com registro constante
   que não diferencia maiúsculas de minúsculas foi descontinuada.
  </p>
 </div>

 <div class="sect2" id="migration74.deprecated.filter">
  <h3 class="title">Filter</h3>

  <p class="para">
   <strong><code><a href="filter.constants.php#constant.filter-sanitize-magic-quotes">FILTER_SANITIZE_MAGIC_QUOTES</a></code></strong> está descontinuada,
   use <strong><code><a href="filter.constants.php#constant.filter-sanitize-add-slashes">FILTER_SANITIZE_ADD_SLASHES</a></code></strong> em seu lugar.
  </p>
 </div>

 <div class="sect2" id="migration74.deprecated.mbstring">
  <h3 class="title">Multibyte String</h3>

  <p class="para">
   A passagem de um padrão não-string para a função <span class="function"><a href="function.mb-ereg-replace.php" class="function">mb_ereg_replace()</a></span>
   está descontinuado. Atualmente, os padrões não-string são interpretados como
   pontos de código ASCII. No PHP 8, o padrão será interpretado como
   uma string.
  </p>
  <p class="para">
   Passar a codificação como terceiro parâmetro para a função <span class="function"><a href="function.mb-strrpos.php" class="function">mb_strrpos()</a></span>
   está descontinuado. Em vez disso, passe um offset 0 e a codificação como quarto parâmetro.
  </p>
 </div>

 <div class="sect2" id="migration74.deprecated.ldap">
  <h3 class="title">Lightweight Directory Access Protocol</h3>

  <p class="para">
   <span class="function"><a href="function.ldap-control-paged-result-response.php" class="function">ldap_control_paged_result_response()</a></span> e
   <span class="function"><a href="function.ldap-control-paged-result.php" class="function">ldap_control_paged_result()</a></span> estão descontinuadas.
   Os controles de paginação podem ser enviados com a função
   <span class="function"><a href="function.ldap-search.php" class="function">ldap_search()</a></span>.
  </p>
 </div>

 <div class="sect2" id="migration74.deprecated.reflection">
  <h3 class="title">Reflection</h3>

  <p class="para">
   As chamadas para <span class="methodname"><a href="reflectiontype.tostring.php" class="methodname">ReflectionType::__toString()</a></span> agora geram
   um aviso de descontinuação. Este método foi descontinuado em favor de
   <span class="methodname"><a href="reflectionnamedtype.getname.php" class="methodname">ReflectionNamedType::getName()</a></span> na documentação
   a partir do PHP 7.1, mas não emitiu um aviso de descontinuação por motivos técnicos.
  </p>
  <p class="para">
   Os métodos <code class="literal">export()</code> em todas as classes <span class="classname"><a href="class.reflection.php" class="classname">Reflection</a></span>
   foram descontinuados. Construa um objeto <span class="classname"><a href="class.reflection.php" class="classname">Reflection</a></span> e
   converta-o em string em seu lugar:
   <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// ReflectionClass::export(Foo::class, false) is:<br /></span><span style="color: #007700">echo new </span><span style="color: #0000BB">ReflectionClass</span><span style="color: #007700">(</span><span style="color: #0000BB">Foo</span><span style="color: #007700">::class), </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// $str = ReflectionClass::export(Foo::class, true) is:<br /></span><span style="color: #0000BB">$str </span><span style="color: #007700">= (string) new </span><span style="color: #0000BB">ReflectionClass</span><span style="color: #007700">(</span><span style="color: #0000BB">Foo</span><span style="color: #007700">::class);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
  </p>
 </div>

 <div class="sect2" id="migration74.deprecated.socket">
  <h3 class="title">Socket</h3>

  <p class="para">
   <strong><code>AI_IDN_ALLOW_UNASSIGNED</code></strong> e
   <strong><code>AI_IDN_USE_STD3_ASCII_RULES</code></strong> para
   <span class="function"><a href="function.socket-addrinfo-lookup.php" class="function">socket_addrinfo_lookup()</a></span> foram descontinuadas,
   devido a uma descontinuação na própria glibc.
  </p>
 </div>

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