<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration56.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'migration56.incompatible.php',
    1 => 'Cambios incompatibles con versiones anteriores',
    2 => 'Cambios incompatibles con versiones anteriores',
  ),
  'up' => 
  array (
    0 => 'migration56.php',
    1 => 'Migraci&oacute;n de PHP 5.5.x a PHP 5.6.x',
  ),
  'prev' => 
  array (
    0 => 'migration56.php',
    1 => 'Migraci&oacute;n de PHP 5.5.x a PHP 5.6.x',
  ),
  'next' => 
  array (
    0 => 'migration56.new-features.php',
    1 => 'Nuevas caracter&iacute;sticas',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'appendices/migration56/incompatible.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration56.incompatible" class="sect1">
 <h2 class="title">Cambios incompatibles con versiones anteriores</h2>
 <p class="simpara">
  Aunque la mayoría del código PHP 5 existente debería funcionar sin ninguna
  modificación, se deben tener en cuenta algunas incompatibilidades hacia atrás:
 </p>

 <div class="sect2" id="migration56.incompatible.array-keys">
  <h3 class="title">Las claves de los arrays no se sobrescriben al definir un array como una
   propiedad de una clase a través de un literal de array</h3>

  <p class="para">
   Anteriormente, los arrays declarados como propiedades de clase que mezclaban
   claves explícitas e implícitas podían ver sus elementos sobrescritos sin
   advertencia si una clave explícita era idéntica a una clave secuencial
   implícita. Por ejemplo:
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
</span><span style="color: #007700">class </span><span style="color: #0000BB">C </span><span style="color: #007700">{
    const </span><span style="color: #0000BB">ONE </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;
    public </span><span style="color: #0000BB">$array </span><span style="color: #007700">= [
        </span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">ONE </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'foo'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'quux'</span><span style="color: #007700">,
    ];
}

</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">((new </span><span style="color: #0000BB">C</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">array</span><span style="color: #007700">);
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

   <p class="simpara">Resultado del ejemplo anterior en PHP 5.5:</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
array(2) {
  [0]=&gt;
  string(3) &quot;bar&quot;
  [1]=&gt;
  string(4) &quot;quux&quot;
}

</pre></div>
   </div>
   <p class="simpara">Resultado del ejemplo anterior en PHP 5.6:</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
array(3) {
  [1]=&gt;
  string(3) &quot;foo&quot;
  [2]=&gt;
  string(3) &quot;bar&quot;
  [3]=&gt;
  string(4) &quot;quux&quot;
}
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.incompatible.json-decode">
  <h3 class="title">Rigurosidad de <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span></h3>

  <p class="para">
   <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span> ahora rechaza las variantes no escritas en
   minúscula de los literales JSON <code class="literal">true</code>,
   <code class="literal">false</code> y <code class="literal">null</code>, de acuerdo con la
   especificación JSON, y <span class="function"><a href="function.json-last-error.php" class="function">json_last_error()</a></span> se establece de forma
   correspondiente. Anteriormente, los valores pasados a
   <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span> que contenían alguno de estos valores en
   mayúsculas o en una combinación de mayúsculas y minúsculas se aceptaban.
  </p>

  <p class="para">
   Este cambio solo afectará a los casos en los que se pase JSON inválido a
   <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span>: el JSON válido no se verá afectado y se
   analizará normalmente.
  </p>
 </div>

 <div class="sect2" id="migration56.incompatible.peer-verification">
  <h3 class="title">Las envolturas de flujo ahora verifican de forma predeterminada los certificados de par y los nombres de host al usar SSL/TLS</h3>

  
   <p class="simpara">
    Todos los flujos cifrados de cliente activan ahora la verificación de pares de forma
    predeterminada. De forma predeterminada, esto utilizará el paquete de CA predeterminado de OpenSSL para verificar el
    certificado de par. Para la mayoría de los usuarios, esto no debería causar problemas al comunicarse con
    servidores que tengan certificados SSL válidos, ya que la mayoría de los
    distribuidores configuran OpenSSL para usar las rutas de CA predeterminadas.
   </p>

   <p class="simpara">
    El paquete de CA predeterminado se puede sobrescribir a nivel global utilizando las
    opciones de configuración openssl.cafile o openssl.capath, o para cada
    solicitud utilizando las opciones de contexto
    <a href="context.ssl.php#context.ssl.cafile" class="link"><code class="parameter">cafile</code></a> o
    <a href="context.ssl.php#context.ssl.capath" class="link"><code class="parameter">capath</code></a>
    .
   </p>

   <p class="simpara">
    Aunque en general no se recomienda, es posible desactivar la verificación del certificado
    de par para una solicitud estableciendo la opción de contexto
    <a href="context.ssl.php#context.ssl.verify-peer" class="link"><code class="parameter">verify_peer</code></a>
    a <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, y desactivar la validación del nombre del par configurando la opción de
    contexto <a href="context.ssl.php#context.ssl.verify-peer-name" class="link"><code class="parameter">verify_peer_name</code></a>
    a <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   </p>

 </div>

 <div class="sect2" id="migration56.incompatible.gmp">
  <h3 class="title">Los recursos <a href="book.gmp.php" class="link">GMP</a> ahora son objetos</h3>

  <p class="para">
   Los recursos <a href="book.gmp.php" class="link">GMP</a> ahora son objetos.
   La API de la extensión GMP no ha cambiado y el código existente debería
   continuar funcionando sin modificación a menos que se realice una verificación
   explícita usando <span class="function"><a href="function.is-resource.php" class="function">is_resource()</a></span> o equivalente.
  </p>
 </div>

 <div class="sect2" id="migration56.incompatible.mcrypt">
  <h3 class="title">Las funciones <a href="book.mcrypt.php" class="link">Mcrypt</a> ahora requieren claves o IV válidos</h3>

  <p class="para">
   <span class="function"><a href="function.mcrypt-encrypt.php" class="function">mcrypt_encrypt()</a></span>, <span class="function"><a href="function.mcrypt-decrypt.php" class="function">mcrypt_decrypt()</a></span>,
   <span class="function"><strong>mcrypt_cbc()</strong></span>, <span class="function"><strong>mcrypt_cfb()</strong></span>,
   <span class="function"><strong>mcrypt_ecb()</strong></span>, <span class="function"><a href="function.mcrypt-generic.php" class="function">mcrypt_generic()</a></span> y
   <span class="function"><strong>mcrypt_ofb()</strong></span> ya no aceptan claves o vectores de
   inicialización (IVs) de tamaños incorrectos, y los modos de cifrado por bloques
   que requieren IVs fallarán ahora si no se proporciona un IV.
  </p>
 </div>

 <div class="sect2" id="migration56.incompatible.curl">
  <h3 class="title">Subida de archivos con <a href="book.curl.php" class="link">cURL</a></h3>

  <p class="para">
   La subida de archivos usando la sintaxis @file ahora requiere que la
   directiva CURLOPT_SAFE_UPLOAD esté definida como <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   Se debe usar <span class="classname"><a href="class.curlfile.php" class="classname">CURLFile</a></span> en su lugar.
  </p>
 </div>
</div><?php manual_footer($setup); ?>