martes, 8 de octubre de 2013

Modelo de orientación a objetos en PHP 5




Uno de los problemas más básicos de las versiones anteriores de PHP era la clonación de objetos, que se realizaba al asignar un objeto a otra variable o al pasar un objeto por parámetro en una función. Para solventar este problema PHP5 hace uso de los manejadores de objetos (Object handles), que son una especie de punteros que apuntan hacia los espacios en memoria donde residen los objetos. Cuando se asigna un manejador de objetos o se pasa como parámetro en una función, se duplica el propio object handle y no el objeto en si. 


Nota: También se puede realizar una clonación de un objeto, para obtener una copia exacta, pero que no es el propio objeto. Para ello utilizamos una nueva instrucción llamada "clone", que veremos más adelante.

Algunas características del trabajo con POO en PHP 5 

Veamos a continuación una pequeña lista de las nuevas características de la programación orientada a objetos (POO) en PHP5. No vamos a describir exhaustivamente cada característica. Ya lo haremos más adelante en este mismo manual. 

1.- Nombres fijos para los constructores y destructores 
En PHP 5 hay que utilizar unos nombres predefinidos para los métodos constructores y destructores (Los que se encargan de resumir las tareas de inicialización y destrucción de los objetos. Ahora se han de llamar __construct() y __destruct(). 

2.- Acceso public, private y protected a propiedades y métodos 
A partir de ahora podemos utilizar los modificadores de acceso habituales de la POO. Estos modificadores sirven para definir qué métodos y propiedades de las clases son accesibles desde cada entorno. 

3.- Posibilidad de uso de interfaces 
Las interfaces se utilizan en la POO para definir un conjunto de métodos que implementa una clase. Una clase puede implementar varias interfaces o conjuntos de métodos. En la práctica, el uso de interfaces es utilizado muy a menudo para suplir la falta de herencia múltiple de lenguajes como PHP o Java. Lo explicaremos con detalle más adelante. 

4.- Métodos y clases final 
En PHP 5 se puede indicar que un método es "final". Con ello no se permite sobrescribir ese método, en una nueva clase que lo herede. Si la clase es "final", lo que se indica es que esa clase no permite ser heredada por otra clase.

5.- Operador instanceof 
Se utiliza para saber si un objeto es una instancia de una clase determinada. 

6.- Atributos y métodos static 
En PHP5 podemos hacer uso de atributos y métodos "static". Son las propiedades y funcionalidades a las que se puede acceder a partir del nombre de clase, sin necesidad de haber instanciado un objeto de dicha clase. 

7.- Clases y métodos abstractos 
También es posible crear clases y métodos abstractos. Las clases abstractas no se pueden instanciar, se suelen utilizar para heredarlas desde otras clases que no tienen porque ser abstractas. Los métodos abstractos no se pueden llamar, se utilizan más bien para ser heredados por otras clases, donde no tienen porque ser declarados abstractos. 

8.- Constantes de clase 
Se pueden definir constantes dentro de la clase. Luego se pueden acceder dichas constantes a través de la propia clase. 

9.- Funciones que especifican la clase que reciben por parámetro 
Ahora se pueden definir funciones y declarar que deben recibir un tipo específico de objeto. En caso que el objeto no sea de la clase correcta, se produce un error. 

10.- Función __autoload() 
Es habitual que los desarrolladores escriban un archivo por cada clase que realizan, como técnica para organizar el código de las aplicaciones. Por esa razón, a veces resulta tedioso realizar los incluyes de cada uno de los códigos de las clases que se utilizana en un script. La función __autoload() sirve para intentar incluir el código de una clase que se necesite, y que no haya sido declarada todavía en el código que se está ejecutando. 

11.- Clonado de objetos 
Si se desea, se puede realizar un objeto a partir de la copia exacta de otro objeto. Para ello se utiliza la instrucción "clone". También se puede definir el método __clone() para realizar tareas asociadas con la clonación de un objeto.

Fuente: enlace

No hay comentarios:

Publicar un comentario

Entradas populares