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

contributors($setup);

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

 <div class="sect2" id="migration85.incompatible.core">
  <h3 class="title">Núcleo de PHP</h3>

  <div class="sect3" id="migration85.incompatible.core.array-callable-alias">
   <h4 class="title">Nombres de alias <code class="literal">&quot;array&quot;</code> y <code class="literal">&quot;callable&quot;</code></h4>

   <p class="simpara">
    Ya no es posible utilizar <code class="literal">&quot;array&quot;</code>
    y <code class="literal">&quot;callable&quot;</code> como nombres de alias de clase
    en <span class="function"><a href="function.class-alias.php" class="function">class_alias()</a></span>
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.loosely-comparing-object">
   <h4 class="title">Comparación imprecisa de objetos incomparables</h4>

   <p class="simpara">
    Anteriormente, la comparación imprecisa de objetos no comparables (p. ej., enumeraciones,
    <span class="classname"><a href="class.curlhandle.php" class="classname">CurlHandle</a></span> y otras clases internas) con valores booleanos
    era inconsistente. Si se comparaba con un literal booleano
    <code class="code">$object == true</code>, se comportaba igual que
    <code class="code">(bool)$object</code>. Si se comparaba con un valor estáticamente desconocido
    <code class="code">$object == $true</code>, siempre devolvía <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
    Este comportamiento se unificó para que siempre se ajustara al de
    <code class="code">(bool)$object</code>.
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.gc-collect-cycles">
   <h4 class="title">Valor de retorno de gc_collect_cycles</h4>

   <p class="simpara">
    El valor de retorno de <span class="function"><a href="function.gc-collect-cycles.php" class="function">gc_collect_cycles()</a></span> ya no incluye
    strings y recursos que se recopilaron indirectamente a través de ciclos.
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.substitute-final-subclasses">
   <h4 class="title">Sustituir la palabra clave static en la subclase final</h4>

   <p class="simpara">
    Ahora está permitido sustituir <span class="type">static</span> por <span class="type">self</span> o el nombre de clase concreto
    en las subclases finales.
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.tick-handlers">
   <h4 class="title">Controladores de ticks</h4>

   <p class="simpara">
    Los controladores de ticks ahora se desactivan después de todas las funciones de apagado,
    los destructores se hayan ejecutado, y se hayan limpiado los controladores de salida.
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.trait-binding">
   <h4 class="title">Enlace de rasgos</h4>

   <p class="simpara">
    Ahora, los rasgos se vinculan antes que la clase padre. Este es un cambio de comportamiento
    sutil, pero debería ajustarse mejor a las expectativas de los usuarios.
    
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.errors-compilation-and-linking">
   <h4 class="title">Errores durante la compilación y el enlace de clases</h4>

   <p class="simpara">
    Los errores que se producen durante la compilación y el enlazado de clases ahora se procesan siempre
    después de la compilación o el enlazado. Los errores fatales que se producen durante
    la compilación o el enlazado de clases provocan que cualquier error retrasado se procese
    inmediatamente, sin llamar a los controladores de errores definidos por el usuario.
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.exception-by-userdefined-handler">
   <h4 class="title">Excepciones generadas por el controlador de errores definido por el usuario</h4>

   <p class="simpara">
    Las excepciones generadas por los controladores de errores definidos por el usuario al manejar errores de
    enlace de clases ya no se convierten en errores fatales y no impiden el enlace.
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.attribute-during-compilation">
   <h4 class="title">Error al aplicar el atributo durante la compilación</h4>

   <p class="simpara">
    Aplicar <code class="code">#[\Attribute]</code> a una clase abstracta, enumeración, interfaz o rasgo
    provoca un error durante la compilación. Anteriormente, se podía agregar el atributo,
    pero al llamar a <span class="methodname"><a href="reflectionattribute.newinstance.php" class="methodname">ReflectionAttribute::newInstance()</a></span>
    se producía un error.
    El error se puede retrasar desde la compilación hasta el tiempo de ejecución mediante el nuevo
    atributo <code class="code">#[\DelayedTargetValidation]</code>.
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.disable-ini-setting">
   <h4 class="title">Configuración INI disable_classes</h4>

   <p class="simpara">
    Se ha eliminado la configuración INI <a href="ini.core.php#ini.disable-classes" class="link">disable_classes</a>
    ya que provoca que se rompan varias suposiciones del motor.
    
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.destruct-non-array-values">
   <h4 class="title">Desestructuración de valores que no son arrays</h4>

   <p class="simpara">
    La desestructuración de valores que no son array (distintos de <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>) utilizando <code class="literal">[]</code> o <span class="function"><a href="function.list.php" class="function">list()</a></span> ahora
    emite una advertencia.
    
   </p>

  </div>

  <div class="sect3" id="migration85.incompatible.core.warning-related-to-cast">
   <h4 class="title">Advertencias relacionadas con conversiones</h4>

   <p class="simpara">
    Ahora se emite una advertencia al convertir números de punto flotante (o cadenas que parecen ser
    de punto flotante) a enteros si no se pueden representar como tales. Esto afecta
    tanto a las conversiones explícitas como a las implícitas de enteros.
    
   </p>

   <p class="simpara">
    Ahora se emite una advertencia al convertir NAN a otros tipos.
    
   </p>

  </div>

 </div>

 <div class="sect2" id="migration85.incompatible.bzip2">
  <h3 class="title">Bzip2</h3>

  <p class="simpara">
   <span class="function"><a href="function.bzcompress.php" class="function">bzcompress()</a></span> ahora lanza un <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span>
   cuando <code class="parameter">$block_size</code> no está entre 1 y 9.
  </p>

  <p class="simpara">
   <span class="function"><a href="function.bzcompress.php" class="function">bzcompress()</a></span> ahora lanza un <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span>
   cuando <code class="parameter">$work_factor</code> no está entre 0 y 250.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.dom">
  <h3 class="title">DOM</h3>

  <p class="simpara">
   Clonar un <span class="classname"><a href="class.domnamednodemap.php" class="classname">DOMNamedNodeMap</a></span>,
   <span class="classname"><a href="class.domnodelist.php" class="classname">DOMNodeList</a></span>, <span class="classname"><a href="class.dom-namednodemap.php" class="classname">Dom\NamedNodeMap</a></span>,
   <span class="classname"><a href="class.dom-nodelist.php" class="classname">Dom\NodeList</a></span>, <span class="classname"><a href="class.dom-htmlcollection.php" class="classname">Dom\HTMLCollection</a></span>,
   o <span class="classname"><a href="class.dom-dtdnamednodemap.php" class="classname">Dom\DtdNamedNodeMap</a></span> ahora falla.
   Dado que nunca se generó un objeto funcional, no se espera ningún impacto.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.fileinfo">
  <h3 class="title">FileInfo</h3>

  <p class="simpara">
   <span class="function"><a href="function.finfo-file.php" class="function">finfo_file()</a></span> y <span class="methodname"><a href="finfo.file.php" class="methodname">finfo::file()</a></span>
   ahora lanzan un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> en lugar de un
   <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> cuando <code class="parameter">$filename</code>
   contiene bytes nulos.
   Esto alinea el tipo de error que se produce para que sea coherente con el resto
   del lenguaje.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.intl">
  <h3 class="title">Intl</h3>

  <p class="simpara">
   La extensión ahora requiere al menos ICU 57.1.
  </p>

  <p class="simpara">
   <span class="methodname"><a href="intldateformatter.settimezone.php" class="methodname">IntlDateFormatter::setTimeZone()</a></span>/<span class="function"><a href="intldateformatter.settimezone.php" class="function">datefmt_set_timezone()</a></span>
   ahora lanza una <span class="exceptionname"><a href="class.intlexception.php" class="exceptionname">IntlException</a></span> en clases no
   inicializadas/fallos de clonación.
  </p>

  <p class="simpara">
   Todos los métodos <span class="classname"><a href="class.locale.php" class="classname">Locale</a></span> ahora lanzan un
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> cuando el argumento locale contiene bytes nulos.
  </p>

  <p class="simpara">
   El comportamiento de <strong><code><a href="class.collator.php#collator.constants.sort-regular">Collator::SORT_REGULAR</a></code></strong> con respecto al
   manejo de strings numéricas ahora está alineado con el comportamiento de
   <strong><code><a href="array.constants.php#constant.sort-regular">SORT_REGULAR</a></code></strong> en ext/standard.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.ldap">
  <h3 class="title">LDAP</h3>

  <p class="simpara">
   <span class="function"><a href="function.ldap-get-option.php" class="function">ldap_get_option()</a></span> y <span class="function"><a href="function.ldap-set-option.php" class="function">ldap_set_option()</a></span>
   ahora lanzan un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> al pasar una opción no válida.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.mbstring">
  <h3 class="title">MBString</h3>

  <p class="simpara">
   Las tablas de datos Unicode se han actualizado a Unicode 17.0.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.mysqli">
  <h3 class="title">MySQLi</h3>

  <p class="simpara">
   Ahora ya no es posible llamar al constructor mysqli en un objeto ya construido
   y lanza un <span class="exceptionname"><a href="class.error.php" class="exceptionname">Error</a></span>.
  </p>

 </div>

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

  <p class="simpara">
   ODBC ahora presupone que está disponible al menos la funcionalidad de ODBC 3.5.
   Se han eliminado la definición de ODBCVER y las opciones del sistema de compilación para controlarla.
  </p>

  <p class="simpara">
   ODBC ya no incluye opciones de compilación para controladores específicos (excepto
   DB2) y elimina las excepciones para dichos controladores. Se recomienda
   encarecidamente usar un administrador de controladores como iODBC o unixODBC en sistemas que no sean Windows.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.opcache">
  <h3 class="title">Opcache</h3>

  <p class="simpara">
   La extensión Opcache ahora viene integrada en el binario de PHP y siempre
   se carga.
   Las directivas INI <a href="opcache.configuration.php#ini.opcache.enable" class="link">opcache.enable</a>
   y <a href="opcache.configuration.php#ini.opcache.enable-cli" class="link">opcache.enable_cli</a> siguen siendo
   válidas.
  </p>

  <p class="simpara">
   Se han eliminado las opciones de configuración <strong class="option configure">--enable-opcache</strong>/<strong class="option configure">--disable-opcache</strong>
   y la compilación ya no produce objetos <var class="filename">opcache.so</var>
   ni <var class="filename">php_opcache.dll</var>.
  </p>

  <p class="simpara">
   El uso de las directivas INI <code class="literal">zend_extension=opcache.so</code> o
   <code class="literal">zend_extension=php_opcache.dll</code>
   generará una advertencia.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pcntl">
  <h3 class="title">PCNTL</h3>

  <p class="simpara">
   <span class="function"><a href="function.pcntl-exec.php" class="function">pcntl_exec()</a></span> ahora lanza <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span>
   cuando las entradas del parámetro <code class="parameter">$args</code> contienen bytes nulos.
  </p>

  <p class="simpara">
   <span class="function"><a href="function.pcntl-exec.php" class="function">pcntl_exec()</a></span> ahora lanza <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span>
   cuando las entradas o claves del parámetro <code class="parameter">$env_vars</code>
   contienen bytes nulos.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pcre">
  <h3 class="title">PCRE</h3>

  <p class="simpara">
   La extensión se compila sin la opción de compilación
   PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK, que está semi-obsoleta.
   
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pdo">
  <h3 class="title">PDO</h3>

  <p class="simpara">
   Los argumentos del constructor definidos junto con
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-class">PDO::FETCH_CLASS</a></code></strong> ahora siguen la semántica habitual de CUFA
   (<span class="function"><a href="function.call-user-func-array.php" class="function">call_user_func_array()</a></span>).
   Esto significa que las claves de tipo cadena se comportarán como argumentos con nombre.
   Además, se ha eliminado el ajuste automático de los argumentos por valor pasados ​​a un
   parámetro por referencia, y ahora se emite la advertencia habitual <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>
   sobre este problema.
   Para pasar una variable por referencia a un argumento del constructor, utilice la asignación general
   de referencia a un valor de array: <code class="code">$ctor_args = [&amp;$valByRef]</code>
  </p>

  <p class="simpara">
   Intentar llamar a <span class="methodname"><a href="pdostatement.setfetchmode.php" class="methodname">PDOStatement::setFetchMode()</a></span> durante
   una llamada a <span class="methodname"><a href="pdostatement.fetch.php" class="methodname">PDOStatement::fetch()</a></span>,
   <span class="methodname"><a href="pdostatement.fetchobject.php" class="methodname">PDOStatement::fetchObject()</a></span>,
   <span class="methodname"><a href="pdostatement.fetchall.php" class="methodname">PDOStatement::fetchAll()</a></span>, por ejemplo, utilizando trucos como
   pasar el objeto de declaración como argumento de constructor al buscar en un
   objeto, ahora lanzará un <span class="exceptionname"><a href="class.error.php" class="exceptionname">Error</a></span>.
  </p>

  <p class="simpara">
   Los valores de las constantes <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-group">PDO::FETCH_GROUP</a></code></strong>,
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-unique">PDO::FETCH_UNIQUE</a></code></strong>,
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-classtype">PDO::FETCH_CLASSTYPE</a></code></strong>,
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-props-late">PDO::FETCH_PROPS_LATE</a></code></strong>, y
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-serialize">PDO::FETCH_SERIALIZE</a></code></strong> ha cambiado.
  </p>

  <p class="simpara">
   Ahora se lanza un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> si se usa
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-props-late">PDO::FETCH_PROPS_LATE</a></code></strong> con un modo de obtención
   diferente de <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-class">PDO::FETCH_CLASS</a></code></strong>, de forma coherente
   con otras flags de obtención.
  </p>

  <p class="simpara">
   Ahora se lanza un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> si se usa
   <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-into">PDO::FETCH_INTO</a></code></strong> como modo de obtención en
   <span class="methodname"><a href="pdostatement.fetchall.php" class="methodname">PDOStatement::fetchAll()</a></span>,
   de forma similar a <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-lazy">PDO::FETCH_LAZY</a></code></strong>.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pdo-firebird">
  <h3 class="title">PDO_FIREBIRD</h3>

  <p class="simpara">
   Ahora se produce un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> al intentar establecer un nombre de cursor
   demasiado largo en un <span class="classname"><a href="class.pdostatement.php" class="classname">PDOStatement</a></span> resultante del
   controlador Firebird.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.pdo-sqlite">
  <h3 class="title">PDO_SQLITE</h3>

  <p class="simpara">
   SQLite <span class="methodname"><a href="pdo.quote.php" class="methodname">PDO::quote()</a></span> ahora lanzará una excepción
   o emitirá una advertencia, dependiendo del modo de error, si la cadena contiene
   un byte nulo.
  </p>

  <p class="simpara">
   <span class="methodname"><a href="pdo.sqlitecreatecollation.php" class="methodname">PDO::sqliteCreateCollation()</a></span> ahora lanzará una
   excepción si la devolución de llamada tiene un tipo de retorno incorrecto, lo que lo hace más
   acorde con el comportamiento de <span class="methodname"><a href="pdo-sqlite.createcollation.php" class="methodname">Pdo\Sqlite::createCollation()</a></span>.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.posix">
  <h3 class="title">POSIX</h3>

  <p class="simpara">
   <span class="function"><a href="function.posix-kill.php" class="function">posix_kill()</a></span> ahora lanza una
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> cuando el argumento process_id es
   menor o mayor que lo que admite la plataforma (entero con signo o
   rango largo), la función <span class="function"><a href="function.posix-setpgid.php" class="function">posix_setpgid()</a></span> ahora lanza una
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> cuando process_id o
   process_group_id es menor que cero o mayor que lo que admite
   la plataforma.
  </p>

  <p class="simpara">
   <span class="function"><a href="function.posix-setrlimit.php" class="function">posix_setrlimit()</a></span> ahora lanza un
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> cuando los argumentos hard_limit o
   soft_limit son menores que -1 o si soft_limit es mayor que
   hard_limit.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.reflection">
  <h3 class="title">Reflection</h3>

  <p class="simpara">
   <span class="methodname"><a href="reflectionattribute.newinstance.php" class="methodname">ReflectionAttribute::newInstance()</a></span> ahora puede lanzar
   errores para atributos internos si el atributo se aplicó en un destino
   no válido y el error se retrasó del tiempo de compilación al tiempo de ejecución a través
   del atributo #[\DelayedTargetValidation].
   
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.session">
  <h3 class="title">Sesión</h3>

  <p class="simpara">
   Intentar escribir datos de sesión donde <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> tiene una clave
   que contiene el carácter de barra vertical (<code class="literal">|</code>) ahora emitirá una advertencia
   en lugar de fallar silenciosamente.
  </p>

  <p class="simpara">
   <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> es más estricta con respecto al argumento
   del array. Ahora lanza una <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> si
   el array no es un mapa hash, o una <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span>
   si el valor de read_and_close no es de un tipo válido compatible con int.
  </p>

  <p class="simpara">
   Pasar un entero <code class="literal">0</code> como argumento <code class="parameter">locales</code>
   a <span class="function"><a href="function.setlocale.php" class="function">setlocale()</a></span> ya no es compatible y ahora lanza
   un <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span>.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.simplexml">
  <h3 class="title">SimpleXML</h3>

  <p class="simpara">
   Pasar una expresión XPath que devuelva algo distinto de un nodo establecido
   en <span class="methodname"><a href="simplexmlelement.xpath.php" class="methodname">SimpleXMLElement::xpath()</a></span> ahora emitirá una advertencia
   y devolverá <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, en lugar de fallar silenciosamente y devolver un array vacío.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.snmp">
  <h3 class="title">SNMP</h3>

  <p class="simpara">
   <span class="function"><a href="function.snmpget.php" class="function">snmpget()</a></span>,
   <span class="function"><a href="function.snmpset.php" class="function">snmpset()</a></span>,
   <span class="function"><a href="function.snmp2-get.php" class="function">snmp2_get()</a></span>,
   <span class="function"><a href="function.snmp2-set.php" class="function">snmp2_set()</a></span>,
   <span class="function"><a href="function.snmp3-get.php" class="function">snmp3_get()</a></span>,
   <span class="function"><a href="function.snmp3-set.php" class="function">snmp3_set()</a></span>
   y <span class="methodname"><a href="snmp.construct.php" class="methodname">SNMP::__construct()</a></span> ahora lanzará una
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> cuando el nombre de host
   es demasiado largo, contiene algún byte nulo, o si el puerto proporcionado
   es negativo o mayor que 65535, los valores de tiempo de espera y reintentos
   son inferiores a -1 o demasiado grandes.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.soap">
  <h3 class="title">SOAP</h3>

  <p class="simpara">
   <span class="methodname"><a href="soapclient.dorequest.php" class="methodname">SoapClient::__doRequest()</a></span> ahora acepta un nuevo
   parámetro opcional <code class="parameter">$uriParserClass</code> que acepta
   argumentos de tipo string o <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
   <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> representa el método original basado en
   (<span class="function"><a href="function.parse-url.php" class="function">parse_url()</a></span>), mientras que los nuevos backends se utilizarán al pasar
   <span class="classname"><a href="class.uri-rfc3986-uri.php" class="classname">Uri\Rfc3986\Uri</a></span> o <span class="classname"><a href="class.uri-whatwg-url.php" class="classname">Uri\WhatWg\Url</a></span>.
   
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.sockets">
  <h3 class="title">Sockets</h3>

  <p class="simpara">
   <span class="function"><a href="function.socket-create-listen.php" class="function">socket_create_listen()</a></span>,
   <span class="function"><a href="function.socket-bind.php" class="function">socket_bind()</a></span> y <span class="function"><a href="function.socket-sendto.php" class="function">socket_sendto()</a></span>
   ahora lanzan un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> si el puerto es menor
   que 0 o mayor que 65535, y también si alguna de las entradas del array de sugerencias está
   indexada numéricamente.
  </p>

  <p class="simpara">
   <span class="function"><a href="function.socket-addrinfo-lookup.php" class="function">socket_addrinfo_lookup()</a></span> ahora lanza un
   <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> si alguno de los valores de las sugerencias
   no se puede convertir a int y puede lanzar un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> si
   alguno de estos valores se desborda.
  </p>

  <p class="simpara">
   <span class="function"><a href="function.socket-set-option.php" class="function">socket_set_option()</a></span> con las opciones
   <strong><code><a href="sockets.constants.php#constant.mcast-leave-group">MCAST_LEAVE_GROUP</a></code></strong>/<strong><code><a href="sockets.constants.php#constant.mcast-leave-source-group">MCAST_LEAVE_SOURCE_GROUP</a></code></strong>
   ahora lanzan una excepción si el valor no es un objeto o array válido.
  </p>

  <p class="simpara">
   <span class="function"><a href="function.socket-set-option.php" class="function">socket_set_option()</a></span> con contexto multicast ahora lanza un
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> cuando el socket creado no es de
   la familia <strong><code><a href="sockets.constants.php#constant.af-inet">AF_INET</a></code></strong>/<strong><code><a href="sockets.constants.php#constant.af-inet6">AF_INET6</a></code></strong>.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.spl">
  <h3 class="title">SPL</h3>

  <p class="simpara">
   <span class="classname"><a href="class.arrayobject.php" class="classname">ArrayObject</a></span> ya no acepta enumeraciones, ya que modificar las
   propiedades <span class="property">$name</span> o <span class="property">$value</span> puede romper
   las suposiciones del motor.
  </p>

  <p class="simpara">
   El parámetro <span class="methodname"><a href="splfileobject.fwrite.php" class="methodname">SplFileObject::fwrite()</a></span> <code class="parameter">$length</code> ahora admite valores nulos.
   El valor predeterminado cambió de <code class="literal">0</code> a <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
  </p>

 </div>

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

  <p class="simpara">
   El uso de una función de la familia printf con un formateador que no especificó
   previamente la precisión incorrectamente restablece la precisión en lugar de tratarla
   como una precisión de 0.
  </p>

 </div>

 <div class="sect2" id="migration85.incompatible.tidy">
  <h3 class="title">Tidy</h3>

  <p class="simpara">
   <span class="methodname"><a href="tidy.construct.php" class="methodname">tidy::__construct()</a></span>,
   <span class="methodname"><a href="tidy.parsefile.php" class="methodname">tidy::parseFile()</a></span>,
   <span class="methodname"><a href="tidy.parsestring.php" class="methodname">tidy::parseString()</a></span> ahora lanza un
   <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> si la configuración contiene un
   valor no válido o intenta establecer una entrada interna de solo lectura,
   y un <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> si una clave de configuración no es
   un string.
  </p>

 </div>

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