## Registro de cambios de la POO

Aquí se registran los cambios del modelo de POO de PHP 5. Las descripciones y otras notas respecto a estas nuevas funcionalidades están documentadas dentro de la documentación de POO 5.

Versión | Descripción
--- | ---
7.0.0 | Definir propiedades (compatibles) en dos rasgos («traits») ya no lanza un error.
5.6.0 | Añadido: El método __debugInfo().
5.5.0 | Añadido: La constante mágica ::class.
5.5.0 | Añadido: finally para manejar excepciones.
5.4.0 | Añadido: traits.
5.4.0 | Cambiado: Si una clase abstracta define una firma para el constructor, ahora se hará cumplir.
5.3.3 | Cambiado: Los métodos con el mismo nombre que el último elemento de un nombre de clase perteneciente a un espacio de nombres ya no serán tratados como un constructor. Este cambio no afecta a las clases que no pertenecen a un espacio de nombres.
5.3.0 | Cambiado: Ya no es necesario que los valores predeterminados de los métodos de una clase que implemente un interfaz coincidan con los valores predeterminados de los prototipos de la interfaz.
5.3.0 | Cambiado: Ahora es posible hacer referencia a la clase utilizando una variable (p.ej., `echo $nombreclase::constante;`). La variable no puede contener como valor una palabra reservada (p.ej., `self`, `parent` o `static`).
5.3.0 | Cambiado: Se emite un error de nivel `E_WARNING` si al sobrecargar un método mágico se le declara como estático. Además, hace necesario que tenga visibilidad pública.
5.3.0 | Cambiado: Antes de 5.3.0, las excepciones lanzadas en la función __autoload() no podían capturarse en el bloque catch, y provocaban un error fatal. Ahora, las excepciones lanzadas dentro de la función __autoload pueden capturarse en el bloque catch, con una única salvedad: Si se lanza una excepción definida por el usuario, esta excepción debería estar disponible. Se puede utilizar recursivamente la función __autoload para cargar automáticamente la clase de la excepción definida por el usuario.
5.3.0 | Añadido: El método __callStatic.
5.3.0 | Añadido: El soporte para heredoc y nowdoc para constantes de clase y definición de propiedades. Nota: los valores heredoc deben seguir las mismas reglas que los string de comillas dobles (p.ej., no contener variables).
5.3.0 | Añadido: Enlaces estáticos en tiempo de ejecución.
5.3.0 | Añadido: El método __invoke().
5.2.0 | Cambiado: Al método __toString() sólo se le invocaba cuando se le combinaba con echo o con print. Pero ahora, se le invoca en cualquier contexto de string (p.ej, en printf() con el modificador `%s`) pero no en contextos de otro tipo (p.ej. con el modificador `%d`). Desde PHP 5.2.0, convertir objetos a string sin el método `__toString` emitirá un error de nivel `E_RECOVERABLE_ERROR`.
5.1.3 | Cambiado: En versiones anteriores de PHP 5, se consideraba obsoleto el uso de `var` y emitía un error de nivel `E_STRICT`. Ya no está obsoleto, y por tanto no emite el error.
5.1.0 | Cambiado: Ahora se invoca al método estático __set_state() en las clases exportadas por var_export().
5.1.0 | Añadido: Los métodos __isset() y __unset().