Otro miércoles más nos encontramos con otra entrega del curso de PHP de RedesZone. Os recordamos que si os habéis perdido alguna entrega tenéis la recopilación de volúmenes que os puede resultar muy útil.
Hoy en el curso de PHP vamos a hablar de la herencia y de los constructores.
Ahora todos os estaréis preguntando: ¿pero no hablamos y hicimos constructores?. Pues eso pensabais pero en realidad no, hicimos una función que representase un constructor de clase pero en realidad no hicimos un constructor de verdad, eso vamos a hacerlo hoy.
La forma de crear un constructor “de verdad” es creando un metodo __construct() , que será nuestro constructor.
Mi_nueva_clase ()
{
function __construct(Argumentos)
{
#Clase construida, cuerpo del constructor
}
}
Ejemplo:
– Herencia
La herencia está presente en casi todos, por no decir todo lenguaje de programación orientado a objetos. Es una técnica que nos permite extender unas clases a partir de otras ya creadas, es decir heredar todo lo que tenemos de una clase ya creada a una nueva clase.
La idea del mecanismo de herencia es ahorrarnos código y a la vez relacionar conceptualmente las clases entre sí, vamos a ver un ejemplo.
Imaginaos que tenemos que programa X software para una tienda de teléfonos móviles. Como sabréis , en el volumen anterior programamos nuestra clase teléfono móvil, pero ahora trabajando para esta tienda tenemos que operar con un montón de modelos diferentes de teléfonos móviles, sería pesadísimo programar una clase para cada uno de ellos y más cuando tenemos un montón de métodos iguales para todos, solución : ¡Herencia!.
Una idea a tener en cuenta sería crear una clase teléfono móvil con todos los métodos y atributos comunes a todos los teléfonos móviles independientemente del modelo, y una vez realizada esa clase extender/heredar en cada modelo (clase que represente al modelo).
Vamos a ver como se heredan clases en PHP.
Lo que tenemos que hacer a la hora de programar para heredar clases es usar la sentencia extends de la siguiente forma:
Mi_nueva_clase extends la_clase_que_queremos_heredar()
{
parent::Constructor_de_la_clase_que_heredamos();
#Aquí nuestra nueva clase, desde la que podemos acceder a los métodos y atributos
# de la clase que heredamos.
}
Como veis, tenemos que hacer una llamada al constructor de la clase de la que heredamos anteponiendo parent:: vamos a ver por qué.
– parent
Se usa simplemente para referirnos a la clase base[sus atributos y sus métodos](clase de la que heredamos) en una situación de herencia.
-::
Los dos puntos, también conocidos como Operador de Resolución de Ámbito , se usan para acceder a elementos estáticos (que veremos en un futuro), constantes y para sobrescribir propiedades o métodos de una clase.
Muy ligados a los dos puntos están las palabras clave parent, self y static, algunas ya las hemos visto y otras la veremos en el futuro.
¿Herencia múltiple?
Se denomina herencia múltiple a heredar de mas de una clase a la vez, en algunos lenguajes como C# es posible, sin embargo en PHP no lo es, así que recordad que solo podemos heredar de una clase.
Acceso a métodos de la clase base
Una vez que hemos extendido una clase, podemos acceder a sus métodos y atributos, pero por ahora vamos a centrarnos en métodos.
Para acceder a los métodos de la clase base deberíamos utilizar la palabra clave parent, el operador de resolución de ámbito :: y el nombre del método al que queremos acceder, de la siguiente forma:
parent::nombredelmetodo();
Cuidado con esto, porque estamos hablando de que podemos acceder al método de esta forma cuando estamos programando la clase, es decir, si por ejemplo en otro método que estamos programando necesitáramos llamar al método de la clase base se haría así, no hay que confundir eso con llamar al método de esta forma una vez instanciada la clase, una vez instanciada el método se llamaría de forma normal cuando la clase esta instanciada con ->
“Deberes”: Pues si queréis, y tenéis tiempo, podéis ir intentando programar el ejemplo que os hemos puesto puesto sobre los teléfonos móviles (los modelos etc, podéis inventarlos), y en el próximo volumen, con la corrección de los ejercicios vendrán los ejemplos de herencia.
Hasta aquí el volumen de hoy, ya sabéis que si tenéis alguna duda lo podéis preguntar.