+34 687 770 998 hector.ayestaran@gmail.com





Blog


06
SEP
2008

Ejemplo simple de herencias con PHP 5

PHP5 nos brinda una arquitectura de clases bastante más estructurada, seria y moderna que su antecesor PHP4. Al margen de polémicas respecto a cual de las dos versiones es la mejor, en esta entrada explicaremos como aprovechar el potencial de las clases de PHP5.

Declararemos tres clases: Abuelo, Padre e Hijo. Padre heredará de Abuelo, e Hijo de Padre y por tanto de Abuelo.

Abuelo es una clase abstracta, con lo cual no puede instanciarse, sus métodos deberían terminar de implementarse en las clases derivadas.

Abuelo.sVar1 es un campo público y estático, será heredado por Padre e Hijo y podrá ser invocado desde el exterior tanto desde instancias como estáticamente, es decir, desde clase.

Abuelo.metodo1() es un miembro abstracto, por lo tanto sólo lo declaramos. Terminará de implementarse en Padre mediante el modificador final.

Abuelo.metodo2() es un miembro protegido, es heredado por Padre e Hijo, pero su acceso es privado. Lo mismo para Abuelo.metodo1().

Padre.sVar2 es un campo privado, no podrá ser heredado, y no podrá ser invocado ni desde el exterior ni desde clases derivadas.
El constructor de Padre es un miembro protegido, lo cual nos impide crear instancias de Padre y obliga a que los miembros de Padre, desde el exterior, sean invocados estáticamente.

Al contrario que los campos, los métodos pueden ser invocados estáticamente aunque no hayan sido declarados como estáticos.

En el constructor de Padre, vemos que inicializamos el campo $sVar1 tanto de manera estática como desde instancia. Podremos acceder a ambos valores según como lo invoquemos.

Hijo es una clase final, no podrá tener clases derivadas.
En el constructor de Hijo vemos que invocamos estáticamente al constructor de Padre, si no lo hiciéramos, el campo $sVar1 no se inicializaría y no obtendríamos el valor deseado al invocarlo.

Volver