<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.oop5.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'language.oop5.changelog.php',
    1 => 'Modificaciones en POO (Programaci&oacute;n orientada a objetos)',
    2 => 'Modificaciones en POO (Programaci&oacute;n orientada a objetos)',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Clases y objetos',
  ),
  'prev' => 
  array (
    0 => 'language.oop5.lazy-objects.php',
    1 => 'Objetos perezosos',
  ),
  'next' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Los espacios de nombres',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'language/oop5/changelog.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.oop5.changelog" class="sect1">
 <h2 class="title">Modificaciones en POO (Programación orientada a objetos)</h2>
 <p class="para">
  Los cambios del modelo de objetos de PHP se recogen aquí. Más información
  y otras notas pueden encontrarse en la documentación sobre POO en PHP.
 </p>
 <p class="para">
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versión</th>
      <th>Descripción</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.4.0</td>
      <td>
       Adición: Soporte para los <a href="language.oop5.property-hooks.php" class="link">hooks de propiedad</a>.
      </td>
     </tr>

     <tr>
      <td>8.4.0</td>
      <td>
       Adición: Soporte de los <a href="language.oop5.lazy-objects.php" class="link">objetos perezosos</a>.
      </td>
     </tr>

     <tr>
      <td>8.1.0</td>
      <td>
       Adición: Soporte para el modificador <span class="modifier">final</span> para las constantes de clase.
       Además, las constantes de interfaces pueden ser redefinidas por omisión.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Adición: Soporte del operador <a href="language.oop5.basic.php#language.oop5.basic.nullsafe" class="link">nullsafe</a> <em>?-&gt;</em>
       para acceder a las propiedades y métodos sobre objetos que pueden ser null.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Cambio: Es ahora posible lanzar excepciones dentro de <span class="function"><strong>__toString()</strong></span>.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Adición: Soporte limitado para la covarianza del tipo de retorno y
       contravarianza para el tipo de argumento. Soporte completo de varianza está
       únicamente disponible si el autocargado es utilizado. Dentro
       de un fichero único solo las referencias no-cíclicas de tipo son
       posibles.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Adición: Es ahora posible tipar las propiedades de clase.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Incompatibilidad: El desempaquetado de argumento de
       <span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span>s con claves no-<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>es ya no es soportado. Este comportamiento no estaba previsto y por consiguiente
       fue eliminado.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Incompatibilidad: En versiones anteriores era posible separar las propiedades estáticas asignando una referencia.
       Esto ha sido eliminado.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Cambio: El operador <a href="language.operators.type.php" class="link">
       instanceof</a> permite ahora literales como primer
       operando, en este caso el resultado es siempre <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Obsoleto: El método <span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span> ha sido declarado
       obsoleto en favor de <span class="function"><a href="function.spl-autoload-register.php" class="function">spl_autoload_register()</a></span>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Cambio: El siguiente nombre no puede ser utilizado para nombrar
       clases, interfaces o traits: <code class="literal">object</code>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Cambio: Una coma colgante puede ahora ser añadida a la
       sintaxis use agrupada para los espacios de nombres.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Cambio: Ampliación del tipo de los parámetros. El tipo de los
       parámetros de los métodos reescritos y de implementación de interfaz
       puede ahora ser omitido.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Cambio: Los métodos abstractos pueden ahora ser reescritos cuando una clase abstracta extiende otra clase abstracta.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       Cambio: Los siguientes nombres no pueden ser utilizados para nombrar
       clases, interfaces o traits: <code class="literal">void</code>
       y <code class="literal">iterable</code>.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       Adición: Es ahora posible definir la
       <a href="language.oop5.visibility.php#language.oop5.visiblity-constants" class="link">visibilidad de las
        constantes de clase</a>.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Obsoleto: Llamada <a href="language.oop5.static.php" class="link">estática</a>
       a métodos que no están declarados como estáticos.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Obsoleto: <a href="language.oop5.decon.php" class="link">Constructor</a>
       estilo PHP 4. Es decir, los métodos que tienen el mismo nombre que la clase
       en la que están definidos.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Adición: Declaración <em>use</em> agrupada: las clases,
       funciones y constantes que son importadas desde un mismo espacio de nombres
       pueden ahora ser agrupadas juntas en una sola declaración use.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Adición: Soporte para las
       <a href="language.oop5.anonymous.php" class="link">clases anónimas</a>
       ha sido añadido gracias a <code class="literal">new class</code>.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Incompatibilidad: Iterar sobre un no-<span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span>
       <span class="type"><a href="language.types.object.php" class="type object">object</a></span> tendrá ahora el mismo comportamiento
       que iterar sobre los <span class="type"><a href="language.types.array.php" class="type array">array</a></span>s por referencia.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Cambio: La definición de propiedades (compatibles) en dos
       <a href="language.oop5.traits.php" class="link">traits</a>
       utilizados ya no provoca un error.
      </td>
     </tr>

     <tr>
      <td>5.6.0</td>
      <td>
       Adición: El método <a href="language.oop5.magic.php#object.debuginfo" class="link">__debugInfo()</a>.
      </td>
     </tr>

     <tr>
      <td>5.5.0</td>
      <td>
       Adición: La constante mágica <a href="language.oop5.basic.php#language.oop5.basic.class.class" class="link">::class</a>.
      </td>
     </tr>

     <tr>
      <td>5.5.0</td>
      <td>
       Adición: <a href="language.exceptions.php" class="link">finally</a> para manejar
       las excepciones.
      </td>
     </tr>

     <tr>
      <td>5.4.0</td>
      <td>
       Adición: <a href="language.oop5.traits.php" class="link">traits</a>.
      </td>
     </tr>

     <tr>
      <td>5.4.0</td>
      <td>
       Cambio: Si una clase
       <a href="language.oop5.abstract.php" class="link">abstracta</a> define
       una firma para el <a href="language.oop5.decon.php" class="link">constructor
       </a>, esta será ahora aplicada.
      </td>
     </tr>

     <tr>
      <td>5.3.3</td>
      <td>
       Cambio: Los métodos con el mismo nombre que el último elemento en un
       <a href="language.namespaces.php" class="link">espacio de nombres</a>
       ya no son considerados como un <a href="language.oop5.decon.php" class="link">constructor</a>. Este cambio
       no afecta a las clases sin espacio de nombres.
      </td>
     </tr>

      <tr>
      <td>5.3.0</td>
      <td>
       Cambio: Las clases que implementan una interfaz con métodos que tienen valores por omisión definidos en sus prototipos ya no están obligadas a respetar los valores por omisión definidos en la interfaz.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Cambio: Es ahora posible referenciar una clase utilizando una variable (e.g. :
       <code class="literal">echo $classname::constant;</code>).
       El valor de la variable no puede ser una palabra clave (e.g. :
       <code class="literal">self</code>,
       <code class="literal">parent</code> o <code class="literal">static</code>).
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Cambio: Un error de nivel <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> es emitido si los métodos mágicos de
       <a href="language.oop5.overloading.php" class="link">sobrecarga</a> son
       declarados como <a href="language.oop5.static.php" class="link">estáticos</a>.
       La visibilidad pública también es requerida.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Cambio: Anteriormente a 5.3.0, las excepciones lanzadas en la función
       <span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span> no podían ser tratadas en un bloque
       <a href="language.exceptions.php" class="link">catch</a> y resultaban en un error fatal. Ahora, las excepciones lanzadas en la función
       __autoload pueden ser capturadas en un bloque
       <a href="language.exceptions.php" class="link">catch</a> y tratadas.
       Si una excepción personalizada es lanzada, entonces su clase debe estar disponible. La función __autoload puede ser utilizada recursivamente para
       autocargar la clase de excepción personalizada.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Adición: El método <a href="language.oop5.overloading.php" class="link">__callStatic</a>.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Adición: <a href="language.types.string.php#language.types.string.syntax.heredoc" class="link">heredoc</a>
       y <a href="language.types.string.php#language.types.string.syntax.nowdoc" class="link">nowdoc</a>
       son soportadas para definir las <em>constantes</em> de
       clases y las propiedades.
       Nota: Los valores heredoc deben seguir las mismas reglas que los
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span> rodeados de comillas dobles (e.g. sin variables dentro).
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Adición: <a href="language.oop5.late-static-bindings.php" class="link">Resolución
       Estática Tardía</a>.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Adición: El método <a href="language.oop5.magic.php#object.invoke" class="link">__invoke()</a>.
      </td>
     </tr>

     <tr>
      <td>5.2.0</td>
      <td>
       Cambio: El método <a href="language.oop5.magic.php#object.tostring" class="link">__toString()</a>
       solo era llamado en llamadas a <span class="function"><a href="function.echo.php" class="function">echo</a></span> o
       <span class="function"><a href="function.print.php" class="function">print</a></span>.
       Ahora, es llamado en cualquier contexto de <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
       (e.g. en <span class="function"><a href="function.printf.php" class="function">printf()</a></span> con el modificador
       <code class="literal">%s</code>) pero no en otros contextos (e.g. con
       el modificador <code class="literal">%d</code>).
       A partir de PHP 5.2.0, convertir un <span class="type"><a href="language.types.object.php" class="type object">object</a></span> sin método
       <a href="language.oop5.magic.php#object.tostring" class="link">__toString</a> en <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
       emite un error <strong><code><a href="errorfunc.constants.php#constant.e-recoverable-error">E_RECOVERABLE_ERROR</a></code></strong>.
      </td>
     </tr>

     <tr>
      <td>5.1.3</td>
      <td>
       Cambio: En versiones anteriores de PHP 5, el uso de
       <code class="literal">var</code> era considerado obsoleto y emitía un error <strong><code><a href="errorfunc.constants.php#constant.e-strict">E_STRICT</a></code></strong>. Ya no es el caso.
      </td>
     </tr>

     <tr>
      <td>5.1.0</td>
      <td>
       Cambio: El método estático
       <a href="language.oop5.magic.php#object.set-state" class="link">__set_state()</a> es ahora
       llamado para las clases exportadas vía <span class="function"><a href="function.var-export.php" class="function">var_export()</a></span>.
      </td>
     </tr>

     <tr>
      <td>5.1.0</td>
      <td>
       Adición: Métodos <a href="language.oop5.overloading.php#object.isset" class="link">__isset()</a>
       y <a href="language.oop5.overloading.php#object.unset" class="link">__unset()</a>.
      </td>
     </tr>

    </tbody>
   
  </table>

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