<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'migration72.new-features.php',
    1 => 'Nuevas caracter&iacute;sticas',
    2 => 'Nuevas caracter&iacute;sticas',
  ),
  'up' => 
  array (
    0 => 'migration72.php',
    1 => 'Migraci&oacute;n de PHP 7.1.x a PHP 7.2.x',
  ),
  'prev' => 
  array (
    0 => 'migration72.php',
    1 => 'Migraci&oacute;n de PHP 7.1.x a PHP 7.2.x',
  ),
  'next' => 
  array (
    0 => 'migration72.new-functions.php',
    1 => 'Nuevas funciones',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Nuevas características</h2>

 <div class="sect2" id="migration72.new-features.object-type">
  <h3 class="title">Nuevo tipo de objeto</h3>

  <p class="para">
   Se ha introducido un nuevo tipo, <span class="type"><a href="language.types.object.php" class="type object">object</a></span>, que puede ser usado para
   el tipado de parámetros (contravariante) y el tipado de retorno (covariante) de cualquier
   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">Carga de extensiones por nombre</h3>

  <p class="para">
   Las extensiones compartidas ya no requieren que se especifique su extensión de archivo
   (<code class="literal">.so</code> para Unix o <code class="literal">.dll</code> para Windows) para
   ser cargadas. Esto está habilitado en el archivo php.ini, así como en la
   función <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">Sobrescribir métodos abstractos</h3>

  <p class="para">
   Ahora los métodos abstractos pueden ser sobrescritos cuando una clase abstracta extiende
   otra clase abstracta.
  </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">// sobrescrito - aún manteniendo la contravarianza para los parámetros y la covarianza para el 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> ahora es una extensión del núcleo</h3>

  <p class="para">
   La biblioteca moderna de criptografía Sodium se ha convertido en una extensión del núcleo en PHP.
  </p>
  <p class="para">
   Para una referencia completa de funciones, consulte el 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 contraseñas con Argon2</h3>

  <p class="para">
   Argon2 se ha añadido a la API de <a href="book.password.php" class="link">hash de contraseñas</a>,
   donde se han expuesto las siguientes constantes:
  </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 de cadena extendidos para <a href="book.pdo.php" class="link">PDO</a></h3>

  <p class="para">
   El tipo de cadena de PDO se ha extendido para soportar el tipo de carácter nacional
   cuando se emulan preparaciones. Esto se ha hecho con las siguientes 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 se utilizan mediante la combinación bit a bit <code class="literal">OR</code> con
   <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">Información adicional de depuración para preparaciones emuladas en <a href="book.pdo.php" class="link">PDO</a></h3>

  <p class="para">
   El método <span class="function"><a href="pdostatement.debugdumpparams.php" class="function">PDOStatement::debugDumpParams()</a></span> ha sido
   actualizado para incluir el SQL que se envía a la base de datos, donde se mostrará la consulta completa y sin procesar
   (incluyendo los marcadores de posición reemplazados con sus valores vinculados). Esto se ha añadido para ayudar en la depuración de preparaciones emuladas (y por lo tanto solo estará disponible cuando las preparaciones emuladas estén activadas).
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.extended-ops-in-ldap">
  <h3 class="title">Soporte para operaciones extendidas en <a href="book.ldap.php" class="link">LDAP</a></h3>

  <p class="para">
   Se ha añadido soporte para EXOP a la extensión LDAP. Esto se ha hecho exponiendo las siguientes funciones y 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">Adiciones de Información de Dirección a la extensión <a href="book.sockets.php" class="link">Sockets</a></h3>

  <p class="para">
   La extensión de sockets ahora tiene la capacidad de buscar información de direcciones, así como conectarse a ella, enlazarse a ella y explicarla. Se han añadido las siguientes cuatro
   funciones para esto:
  </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">Ampliación del tipo de parámetro</h3>

  <p class="para">
   Los tipos de parámetros de métodos sobrescritos y de implementaciones de interfaces
   ahora pueden ser omitidos. Esto sigue siendo conforme con LSP, ya que los tipos de parámetros son 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">Permitir una coma final para namespaces agrupados</h3>

  <p class="para">
   Ahora se puede añadir una coma final a la sintaxis de uso agrupado introducida en
   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">Soporte de <span class="function"><a href="function.proc-nice.php" class="function">proc_nice()</a></span> en Windows</h3>

  <p class="para">
   La función <span class="function"><a href="function.proc-nice.php" class="function">proc_nice()</a></span> ahora es soportada en Windows.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.pack-unpack-endian-support">
  <h3 class="title">Soporte de endian en <span class="function"><a href="function.pack.php" class="function">pack()</a></span> y <span class="function"><a href="function.unpack.php" class="function">unpack()</a></span></h3>

  <p class="para">
   Las funciones <span class="function"><a href="function.pack.php" class="function">pack()</a></span> y <span class="function"><a href="function.unpack.php" class="function">unpack()</a></span> ahora
   soportan float y double tanto en little endian como en big endian.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.exif-features">
  <h3 class="title">Mejoras en la extensión <a href="book.exif.php" class="link">EXIF</a></h3>

  <p class="para">
   La extensión EXIF se ha actualizado para soportar una gama mucho más amplia de formatos. Esto
   significa que sus etiquetas específicas de formato ahora se traducen correctamente al analizar imágenes
   con la función <span class="function"><a href="function.exif-read-data.php" class="function">exif_read_data()</a></span>. Los siguientes nuevos formatos ahora son soportados:
  </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">
   Las funciones EXIF <span class="function"><a href="function.exif-read-data.php" class="function">exif_read_data()</a></span> y <span class="function"><a href="function.exif-thumbnail.php" class="function">exif_thumbnail()</a></span>
   ahora soportan pasar flujos como su primer argumento.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.pcre">
  <h3 class="title">Nuevas características en <a href="book.pcre.php" class="link">PCRE</a></h3>

  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     Se ha añadido el modificador <code class="literal">J</code> para establecer PCRE_DUPNAMES.
    </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 escribir BLOBs</h3>

  <p class="para">
   <span class="methodname"><a href="sqlite3.openblob.php" class="methodname">SQLite3::openBlob()</a></span> ahora permite abrir campos BLOB en
   modo de escritura; anteriormente solo se soportaba el modo de lectura.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.oci8">
  <h3 class="title">Devoluciones de llamada de <a href="book.oci8.php" class="link">Oracle OCI8</a> para Falla Transparente de Aplicaciones</h3>

  <p class="para">
   Se ha añadido soporte para <a href="oci8.taf.php" class="link">devoluciones de llamada de Falla Transparente de Aplicaciones (TAF) de Oracle Database</a>.
   TAF permite que las aplicaciones PHP OCI8 se
   reconecten automáticamente a una base de datos preconfigurada cuando una conexión
   se rompe. El nuevo soporte de devoluciones de llamada de TAF permite que las aplicaciones PHP
   supervisen y controlen la reconexión durante la falla.
  </p>
 </div>

 <div class="sect2" id="migration72.new-features.zip">
  <h3 class="title">Mejoras en la extensión <a href="book.zip.php" class="link">ZIP</a></h3>

  <p class="para">
   Se ha añadido soporte de lectura y escritura para archivos cifrados (requiere libzip 1.2.0).
  </p>
  <p class="para">
   La clase <span class="classname"><a href="class.ziparchive.php" class="classname">ZipArchive</a></span> ahora implementa la interfaz <span class="interfacename"><a href="class.countable.php" class="interfacename">Countable</a></span>.
  </p>
  <p class="para">
   El flujo <code class="literal">zip://</code> ahora acepta una opción de contexto <code class="literal">&#039;password&#039;</code>.
  </p>
 </div>

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