Diferencias entre PHP4 y PHP5

Está claro que PHP es el lenguaje de programación para la creación de entornos web más extendido en la red, se puede comprobar muy fácilmente fijándonos en la extensión de las páginas visitadas (suele ser un documento con extensión .php o .phtml). Por ello y porque además es de código abierto (Open Source), los propios usuarios acceden a dicho código para realizar mejoras y sugerencias en su desarrollo.

En la actualidad está cambiando el “estilo de programación” de los programadores. Ya no se programan códigos eternos y casi incompatibles con cualquier tipo de modificación o mejora, la programación estructurada, está quedando obsoleta. Ahora ya por fin estamos encaminados hacia otro tipo de programación más cercano al usuario, es decir, la programación orientada a objetos.

Hay algunas diferencias entre PHP4 y PHP5 que deben conocer los programadores de PHP, porque según esté en la versión antigua o en la actual, el tratamiento entre dos objetos puede tener unas consecuencias u otras. Se ha intentado compatibilizar lo más posible el PHP5 con su versión anterior, pero algunas de las mejoras pueden dar errores de sintaxis si se desconocen. Las diferencias más importantes son:

-Destructores y uso de Constructores. -Niveles de acceso (private, public, protected) -Clonación de Objetos -Manejo de errores (try,throw,catch) ...

Para crear un objeto primero hay que declararlo, y a continuación hay que instanciar al objeto. Al instanciar el objeto se lanza el constructor de la clase, éste inicializa el objeto. En PHP4 se declaraba el constructor con el mismo nombre de la clase, en PHP5 podemos utilizar el método _construct(), así si renombramos la clase no hay q renombrar el constructor. Se ha tenido muy en cuenta el compatibilizar la versión antigua (PHP4) con la actual (PHP5), por lo que por defecto si no se encuentra un método _construct() se buscará uno con el mismo nombre de la clase.

ejemplo php

El recolector de basura de PHP5 se encarga de liberar la memoria cuando la última referencia al objeto es destruida, es decir, cuando el objeto deja de ser utilizado. En PHP4 no existían los destructores, para destruir los objetos se escribía una función específica o se utilizaba la función register_shutdown_function() En PHP5 existe _destruct() que se ejecuta automáticamente cuando el objeto es destruido. A diferencia de los constructores que sí admiten parámetros, los destructores no tienen ningún parámetro.

Para evitar que desde otras clases se puedan modifcar atributos o invocar determinados métodos, PHP ofrece la posibilidad de proteger el acceso. Hay 3 niveles de acceso: private, que indica que sólo se puede acceder dentro de su misma clase. En caso de intentar acceder desde otra clase, tendremos un: "Fatal Error:Call to private method “ El segundo nivel de protección es protected, que es menos restrictivo que el anterior. Permite que una clase y sus clases hijas accedan a miembros del objeto. El nivel de protección por defecto es: public, que permite el acceso sin restricción de si se accede desde otra clase o no.

La clonación de objetos es una de las novedades de PHP. Se crea una copia exacta de un objeto con todos sus atributos y métodos. Suele ser útil para crear una copia temporal del objeto y así no modificar el original. Para ello utilizamos la función _clone()

         Ejemplo: $variable2 = $variable1-> _clone()

Para manejar los errores se han creado excepciones que interrumpen la ejecución del programa. Las excepciones se definen dos bloques. En el bloque try se incluyen las sentencias que pueden lanzar una excepción. En el bloque catch se maneja la excepción.

Una de las desventajas que plantea el PHP4, es que los objetos son pasados por valor. Es decir, se le envía una copia del valor de la variable, pero no la variable es sí misma. Para pasar los objetos por referencia se utiliza el & precediendo al nombre de la variable &$variable1 PHP5 ha modificado este paso de objetos por valor por defecto, y ahora lo hace por referencia. Gracias a esto evitamos la copia repetitiva de objetos cada vez que son pasados como parámetros de funciones.



Nombre:

Email:

Comentario: