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

contributors($setup);

?>
<div id="migration82.incompatible" class="sect1">
 <h2 class="title">Cambios incompatibles con versiones anteriores</h2>

 <div class="sect2" id="migration82.incompatible.date">
  <h3 class="title">Fecha</h3>

  <p class="para">
   <span class="methodname"><a href="datetime.createfromimmutable.php" class="methodname">DateTime::createFromImmutable()</a></span> ahora tiene un tipo de retorno provisional <span class="type">static</span>, anteriormente era <span class="type"><a href="class.datetime.php" class="type DateTime">DateTime</a></span>.
  </p>

  <p class="para">
   <span class="methodname"><a href="datetimeimmutable.createfrommutable.php" class="methodname">DateTimeImmutable::createFromMutable()</a></span> ahora tiene un tipo de retorno provisional <span class="type">static</span>, anteriormente era <span class="type"><a href="class.datetimeimmutable.php" class="type DateTimeImmutable">DateTimeImmutable</a></span>.
  </p>

  <p class="para">
   Los símbolos <code class="literal">number</code> en los <a href="datetime.formats.php#datetime.formats.relative" class="link">formatos relativos</a>
   ya no aceptan signos múltiples, por ejemplo <code class="literal">+-2</code>.
  </p>
 </div>

 <div class="sect2" id="migration82.incompatible.odbc">
  <h3 class="title">ODBC</h3>

  <p class="para">
   La extensión ODBC ahora escapa el nombre de usuario y la contraseña en el caso donde
   una cadena de conexión y un nombre de usuario/contraseña son pasados, y la cadena
   debe ser agregada. Anteriormente, los valores de usuario que contenían valores que necesitaban ser escapados
   podían crear una cadena de conexión malformada o inyectar valores desde
   datos proporcionados por el usuario. Las reglas de escape deben ser idénticas al comportamiento de
   DbConnectionOptions en la BCL .NET.
  </p>
 </div>

 <div class="sect2" id="migration82.incompatible.pdo-odbc">
  <h3 class="title">PDO_ODBC</h3>

  <p class="para">
   La extensión PDO_ODBC también escapa el nombre de usuario y la contraseña cuando
   una cadena de conexión es pasada. Ver la <a href="migration82.incompatible.php#migration82.incompatible.odbc" class="link">modificación de la extensión ODBC</a>
   para más detalles.
  </p>
 </div>

 <div class="sect2" id="migration82.incompatible.standard">
  <h3 class="title">Estándar</h3>

  <p class="para">
   <span class="function"><a href="function.glob.php" class="function">glob()</a></span> ahora devuelve un <span class="type"><a href="language.types.array.php" class="type array">array</a></span> vacío si todos los caminos de acceso están
   restringidos por <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
   Anteriormente, devolvía <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   Además, ahora se emite una advertencia incluso si solo algunos caminos están restringidos por
   <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
  </p>

  <p class="para">
   <span class="methodname"><a href="filesystemiterator.construct.php" class="methodname">FilesystemIterator::__construct()</a></span>: antes de PHP 8.2.0,
   la constante <strong><code><a href="class.filesystemiterator.php#filesystemiterator.constants.skip-dots">FilesystemIterator::SKIP_DOTS</a></code></strong> siempre estaba definida
   y no podía ser desactivada. Para conservar el comportamiento anterior, la constante
   debe ser definida explícitamente al usar el parámetro <code class="parameter">flags</code>.
   El valor por defecto del parámetro <code class="parameter">flags</code>
   no ha sido modificado.
  </p>

  <p class="para">
   <span class="function"><a href="function.strtolower.php" class="function">strtolower()</a></span>,
   <span class="function"><a href="function.strtoupper.php" class="function">strtoupper()</a></span>,
   <span class="function"><a href="function.stristr.php" class="function">stristr()</a></span>,
   <span class="function"><a href="function.stripos.php" class="function">stripos()</a></span>,
   <span class="function"><a href="function.strripos.php" class="function">strripos()</a></span>,
   <span class="function"><a href="function.lcfirst.php" class="function">lcfirst()</a></span>,
   <span class="function"><a href="function.ucfirst.php" class="function">ucfirst()</a></span>,
   <span class="function"><a href="function.ucwords.php" class="function">ucwords()</a></span>,
   y <span class="function"><a href="function.str-ireplace.php" class="function">str_ireplace()</a></span> ya no son sensibles a la configuración regional.
   Ahora realizan una conversión ASCII de mayúsculas y minúsculas, como si la configuración regional fuera &quot;C&quot;.
   Versiones localizadas de estas funciones están disponibles en la <a href="book.mbstring.php" class="link">extensión MBString</a>.
   Además, <span class="function"><a href="function.array-change-key-case.php" class="function">array_change_key_case()</a></span> y la ordenación con
   <strong><code><a href="array.constants.php#constant.sort-flag-case">SORT_FLAG_CASE</a></code></strong> ahora también usan la conversión ASCII.
  </p>

  <p class="para">
   <span class="function"><a href="function.str-split.php" class="function">str_split()</a></span> ahora devuelve un <span class="type"><a href="language.types.array.php" class="type array">array</a></span> vacío para una <span class="type"><a href="language.types.string.php" class="type string">string</a></span> vacía.
   Anteriormente, devolvía un array con una sola cadena vacía como entrada.
   <span class="function"><a href="function.mb-str-split.php" class="function">mb_str_split()</a></span> no se ve afectada por este cambio ya que
   ya se comportaba de esa manera.
  </p>

  <p class="para">
   <span class="function"><a href="function.ksort.php" class="function">ksort()</a></span> y <span class="function"><a href="function.krsort.php" class="function">krsort()</a></span> ahora realizan comparaciones numéricas de strings
   bajo <strong><code><a href="array.constants.php#constant.sort-regular">SORT_REGULAR</a></code></strong> usando las reglas estándar de PHP 8.
  </p>

  <p class="para">
   <span class="function"><a href="function.var-export.php" class="function">var_export()</a></span> ya no omite la barra invertida inicial para las clases exportadas,
   es decir, ahora están completamente calificadas.
  </p>
 </div>

 <div class="sect2" id="migration82.incompatible.spl">
  <h3 class="title">Biblioteca estándar de PHP (SPL)</h3>

  <p class="para">
   Los siguientes métodos ahora refuerzan su firma :
   <ul class="simplelist">
    <li><span class="methodname"><strong>SplFileInfo::_bad_state_ex()</strong></span></li>
    <li><span class="methodname"><a href="splfileobject.getcsvcontrol.php" class="methodname">SplFileObject::getCsvControl()</a></span></li>
    <li><span class="methodname"><a href="splfileobject.fflush.php" class="methodname">SplFileObject::fflush()</a></span></li>
    <li><span class="methodname"><a href="splfileobject.ftell.php" class="methodname">SplFileObject::ftell()</a></span></li>
    <li><span class="methodname"><a href="splfileobject.fgetc.php" class="methodname">SplFileObject::fgetc()</a></span></li>
    <li><span class="methodname"><a href="splfileobject.fpassthru.php" class="methodname">SplFileObject::fpassthru()</a></span></li>
   </ul>
  </p>

  <p class="para">
   <span class="methodname"><a href="splfileobject.haschildren.php" class="methodname">SplFileObject::hasChildren()</a></span> ahora tiene un tipo de retorno provisional <span class="type"><a href="language.types.singleton.php" class="type false">false</a></span>, anteriormente era <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
  </p>

  <p class="para">
   <span class="methodname"><a href="splfileobject.getchildren.php" class="methodname">SplFileObject::getChildren()</a></span> ahora tiene un tipo de retorno provisional <span class="type"><a href="language.types.null.php" class="type null">null</a></span>, anteriormente era
   <span class="type">?</span><span class="type"><span class="type"><a href="class.recursiveiterator.php" class="type RecursiveIterator">RecursiveIterator</a></span><span class="type"></span></span>.
  </p>

  <p class="para">
   <span class="classname"><a href="class.globiterator.php" class="classname">GlobIterator</a></span> ahora devuelve un <span class="type"><a href="language.types.array.php" class="type array">array</a></span> vacío si todos los caminos de acceso
   están restringidos por <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
   Anteriormente, devolvía <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   Además, ahora se emite una advertencia incluso si solo algunos caminos están restringidos por
   <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
  </p>
 </div>

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