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

contributors($setup);

?>
<div id="migration81.deprecated" class="sect1">
 <h2 class="title">Funcionalidades obsoletas</h2>

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

  <div class="sect3" id="migration81.deprecated.core.serialize-interface">
   <h4 class="title">
    Implementar <span class="interfacename"><a href="class.serializable.php" class="interfacename">Serializable</a></span> sin
    <span class="function"><strong>__serialize()</strong></span> y <span class="function"><strong>__unserialize()</strong></span>
   </h4>

   <p class="para">
    Solo los nuevos métodos deben ser implementados, si no se proporciona soporte para
    PHP anterior a la versión 7.4, o ambos deben ser implementados.
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.null-not-nullable-internal">
   <h4 class="title">Pasar <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> a parámetros no nullables de funciones nativas</h4>

   <p class="para">
    Los tipos escalares de las funciones nativas son nullables por defecto.
    Este comportamiento está depreciado para alinearse con el comportamiento de las funciones
    definidas por el usuario, donde los tipos escalares deben ser marcados como nullables explícitamente.

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #DD0000">"foobar"</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">));<br /></span><span style="color: #FF8000">// Deprecated: Passing null to parameter #2 ($needle) of type string<br />//             is deprecated<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

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

  <div class="sect3" id="migration81.deprecated.core.implicit-float-conversion">
   <h4 class="title">Conversiones implícitas incompatibles de <span class="type"><a href="language.types.float.php" class="type float">float</a></span> a <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></h4>

   <p class="para">
    La conversión implícita de <span class="type"><a href="language.types.float.php" class="type float">float</a></span> a <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> que
    resulta en una pérdida de precisión ahora está depreciada.
    Esto afecta a las claves de <span class="type"><a href="language.types.array.php" class="type array">array</a></span>, las declaraciones de tipo <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> en modo coercitivo,
    y los operadores que trabajan con <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>s.
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= [];<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">15.5</span><span style="color: #007700">]; </span><span style="color: #FF8000">// depreciado, ya que el valor de la clave pierde el componente 0.5<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">15.0</span><span style="color: #007700">]; </span><span style="color: #FF8000">// ok, ya que 15.0 == 15<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

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

  <div class="sect3" id="migration81.deprecated.core.static-trait">
   <h4 class="title">Llamar a un elemento <span class="modifier">static</span> en un trait</h4>

   <p class="para">
    Llamar a un método <span class="modifier">static</span>, o acceder a una
    propiedad <span class="modifier">static</span> directamente en un trait está depreciado.
    Los métodos y propiedades estáticas solo deben ser accedidos en una clase que use el trait.
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.magic-sleep">
   <h4 class="title">Devolver un no <span class="type"><a href="language.types.array.php" class="type array">array</a></span> desde <span class="function"><strong>__sleep()</strong></span></h4>

   <p class="para">
    Devolver un valor que no sea un <span class="type"><a href="language.types.array.php" class="type array">array</a></span> desde
    <a href="language.oop5.magic.php#object.sleep" class="link">__sleep()</a> ahora genera un diagnóstico.
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.void-by-ref">
   <h4 class="title">Devolver una referencia desde una función <span class="type"><span class="type"><a href="language.types.void.php" class="type void">void</a></span></span></h4>

   <p class="para">
    <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: #007700">function &amp;</span><span style="color: #0000BB">test</span><span style="color: #007700">(): </span><span style="color: #0000BB">void </span><span style="color: #007700">{}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    Tal función es contradictoria, y ya emite el
    <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong> siguiente cuando se llama:
    <code class="literal">Only variable references should be returned by reference</code>.
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.autovivification-false">
   <h4 class="title">La autovivificación desde <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></h4>
   <p class="para">
    La autovivificación es el proceso de crear un nuevo <span class="type"><a href="language.types.array.php" class="type array">array</a></span>
    al añadir a un valor.
    La autovivificación está prohibida desde valores escalares, <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> sin embargo
    era una excepción. Esto ahora está depreciado.
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$arr </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;   </span><span style="color: #FF8000">// depreciado<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <p class="para">
     La autovivificación desde <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> y valores indefinidos sigue estando permitida:
     <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">// Desde un valor indefinido<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'some value'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'doesNotExist'</span><span style="color: #007700">][] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Desde null<br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

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

 </div>

 <div class="sect2" id="migration81.deprecated.ctype">
  <h3 class="title">ctype</h3>

  <div class="sect3" id="migration81.deprecated.ctype.nonstring-arguments">
   <h4 class="title">Verificar argumentos no cadena de caracteres</h4>

   <p class="para">
    Pasar un argumento no cadena de caracteres está depreciado.
    En el futuro, el argumento será interpretado como una cadena de caracteres en lugar
    de un código ASCII.
    Según el comportamiento deseado, el argumento debe ser convertido a <span class="type"><a href="language.types.string.php" class="type string">string</a></span> o se debe hacer una llamada explícita a
    <span class="function"><a href="function.chr.php" class="function">chr()</a></span>. Todas las funciones <code class="literal">ctype_*()</code> están afectadas.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.deprecated.date">
  <h3 class="title">Fecha</h3>

  <p class="para">
   <span class="function"><a href="function.date-sunrise.php" class="function">date_sunrise()</a></span> y <span class="function"><a href="function.date-sunset.php" class="function">date_sunset()</a></span>
   han sido depreciadas a favor de <span class="function"><a href="function.date-sun-info.php" class="function">date_sun_info()</a></span>.
  </p>

  <p class="para">
   <span class="function"><a href="function.strptime.php" class="function">strptime()</a></span> ha sido depreciada.
   Usar <span class="function"><a href="function.date-parse-from-format.php" class="function">date_parse_from_format()</a></span> en su lugar (para un análisis independiente de la configuración regional),
   o <span class="methodname"><a href="intldateformatter.parse.php" class="methodname">IntlDateFormatter::parse()</a></span> (para un análisis dependiente de la configuración regional).
  </p>

  <p class="para">
   <span class="function"><a href="function.strftime.php" class="function">strftime()</a></span> y <span class="function"><a href="function.gmstrftime.php" class="function">gmstrftime()</a></span> han sido depreciadas.
   Usar <span class="function"><a href="function.date.php" class="function">date()</a></span> en su lugar (para un formateo independiente de la configuración regional),
   o <span class="methodname"><a href="intldateformatter.format.php" class="methodname">IntlDateFormatter::format()</a></span> (para un formateo dependiente de la configuración regional).
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.filter">
  <h3 class="title">Filtro</h3>

  <p class="para">
   Los filtros <strong><code><a href="filter.constants.php#constant.filter-sanitize-string">FILTER_SANITIZE_STRING</a></code></strong> y
   <strong><code><a href="filter.constants.php#constant.filter-sanitize-stripped">FILTER_SANITIZE_STRIPPED</a></code></strong> están depreciados.
  </p>
  <p class="para">
   La directiva INI <a href="filter.configuration.php#ini.filter.default" class="link">filter.default</a>
   ahora está depreciada.
   
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.gd">
  <h3 class="title">GD</h3>

  <p class="para">
   El parámetro <code class="parameter">num_points</code> de <span class="function"><a href="function.imagepolygon.php" class="function">imagepolygon()</a></span>,
   <span class="function"><a href="function.imageopenpolygon.php" class="function">imageopenpolygon()</a></span> y <span class="function"><a href="function.imagefilledpolygon.php" class="function">imagefilledpolygon()</a></span>
   ha sido depreciado.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.hash">
  <h3 class="title">Hash</h3>

  <p class="para">
   Las funciones <span class="function"><a href="function.mhash.php" class="function">mhash()</a></span>,
   <span class="function"><a href="function.mhash-keygen-s2k.php" class="function">mhash_keygen_s2k()</a></span>,
   <span class="function"><a href="function.mhash-count.php" class="function">mhash_count()</a></span>,
   <span class="function"><a href="function.mhash-get-block-size.php" class="function">mhash_get_block_size()</a></span>,
   y <span class="function"><a href="function.mhash-get-hash-name.php" class="function">mhash_get_hash_name()</a></span> han sido depreciadas.
   Usar las funciones <code class="literal">hash_*()</code> en su lugar.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.imap">
  <h3 class="title">IMAP</h3>

  <p class="para">
   La constante <strong><code><a href="imap.constants.php#constant.nil">NIL</a></code></strong> ha sido depreciada.
   Usar <code class="literal">0</code> en su lugar.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.intl">
  <h3 class="title">Intl</h3>

  <p class="para">
   Llamar a <span class="methodname"><a href="intlcalendar.roll.php" class="methodname">IntlCalendar::roll()</a></span> con un argumento
   <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> está depreciado.
   Usar <code class="literal">1</code> y <code class="literal">-1</code> en lugar de
   <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> y <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> respectivamente.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.mbstring">
  <h3 class="title">Cadena de caracteres multibyte</h3>

  <p class="para">
   Llamar a <span class="function"><a href="function.mb-check-encoding.php" class="function">mb_check_encoding()</a></span> sin ningún argumento
   está depreciado.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.mysqli">
  <h3 class="title">MySQLi</h3>

  <p class="para">
   La propiedad <span class="property"><a href="class.mysqli-driver.php#mysqli-driver.props.report-mode">mysqli_driver::$report_mode</a></span>
   ha sido depreciada.
   Era redundante y obsoleta, usar <strong><code><a href="reserved.constants.php#constant.php-version-id">PHP_VERSION_ID</a></code></strong>
   en su lugar.
  </p>

  <p class="para">
   Llamar a <span class="methodname"><a href="mysqli.get-client-info.php" class="methodname">mysqli::get_client_info()</a></span> o
   <span class="function"><a href="mysqli.get-client-info.php" class="function">mysqli_get_client_info()</a></span> con el argumento
   <code class="parameter">mysqli</code> ha sido depreciado.
   Llamar a <span class="function"><a href="mysqli.get-client-info.php" class="function">mysqli_get_client_info()</a></span> sin argumentos
   para obtener la información de versión de la biblioteca cliente.
  </p>

  <p class="para">
   El método <span class="methodname"><a href="mysqli.init.php" class="methodname">mysqli::init()</a></span> ha sido depreciado.
   Reemplazar las llamadas a <span class="methodname"><strong>parent::init()</strong></span> por
   <span class="methodname"><strong>parent::__construct()</strong></span>.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.oci8">
  <h3 class="title">OCI8</h3>

  <p class="para">
   La directiva INI <a href="oci8.configuration.php#ini.oci8.old-oci-close-semantics" class="link">oci8.old_oci_close_semantics</a>
   está depreciada.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.odbc">
  <h3 class="title">ODBC</h3>

  <p class="para">
   <span class="function"><a href="function.odbc-result-all.php" class="function">odbc_result_all()</a></span> ha sido depreciada.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.pdo">
  <h3 class="title">PDO</h3>

  <p class="para">
   El modo de recuperación <strong><code><a href="pdo.constants.fetch-modes.php#pdo.constants.fetch-serialize">PDO::FETCH_SERIALIZE</a></code></strong> ha sido depreciado.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.pgsql">
  <h3 class="title">PgSQL</h3>

  <p class="para">
   No pasar el argumento de conexión a todas las funciones <code class="literal">pgsql_*()</code>
   ha sido depreciado.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.soap">
  <h3 class="title">SOAP</h3>

  <p class="para">
   La opción <code class="literal">ssl_method</code> de
   <span class="methodname"><a href="soapclient.construct.php" class="methodname">SoapClient::__construct()</a></span> ha sido depreciada
   a favor de las opciones de contexto de flujo SSL.
   
  </p>
 </div>

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

  <p class="para">
   Llamar a <span class="function"><a href="function.key.php" class="function">key()</a></span>, <span class="function"><a href="function.current.php" class="function">current()</a></span>,
   <span class="function"><a href="function.next.php" class="function">next()</a></span>, <span class="function"><a href="function.prev.php" class="function">prev()</a></span>,
   <span class="function"><a href="function.reset.php" class="function">reset()</a></span>, o <span class="function"><a href="function.end.php" class="function">end()</a></span>
   en <span class="type"><a href="language.types.object.php" class="type object">object</a></span>s está depreciado.
   Convertir el <span class="type"><a href="language.types.object.php" class="type object">object</a></span> en <span class="type"><a href="language.types.array.php" class="type array">array</a></span> con <span class="function"><a href="function.get-mangled-object-vars.php" class="function">get_mangled_object_vars()</a></span>
   primero, o usar los métodos de una clase que implemente
   <span class="interfacename"><a href="class.iterator.php" class="interfacename">Iterator</a></span>, como <span class="classname"><a href="class.arrayiterator.php" class="classname">ArrayIterator</a></span>, en su lugar.
  </p>

  <p class="para">
   La directiva INI <a href="filesystem.configuration.php#ini.auto-detect-line-endings" class="link">auto_detect_line_endings</a>
   está depreciada.
   Si es necesario, manejar manualmente los saltos de línea <code class="literal">&quot;\r&quot;</code> en su lugar.
  </p>

  <p class="para">
   Las constantes <strong><code><a href="filesystem.constants.php#constant.file-binary">FILE_BINARY</a></code></strong> y
   <strong><code><a href="filesystem.constants.php#constant.file-text">FILE_TEXT</a></code></strong> han sido depreciadas.
   Nunca tuvieron efecto.
  </p>
 </div>

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