5 - Método constructor de una clase (__construct) |
El constructor es un método especial de una clase. El objetivo fundamental del constructor es inicializar los atributos del objeto que creamos.
Básicamente el constructor remplaza al método inicializar que habíamos hecho en el concepto anterior.
Las ventajas de implementar un constructor en lugar del método inicializar son:
Otras características de los constructores son:
Veamos la sintaxis del constructor:
public function __construct([parámetros]) { [algoritmo] }
Debemos definir un método llamado __construct (es decir utilizamos dos caracteres de subrayado y la palabra construct). El constructor debe ser un método público (public function).
Además hemos dicho que el constructor puede tener parámetros.
Confeccionaremos el mismo problema del concepto anterior para ver el cambio que debemos hacer de ahora en más.
Problema:Confeccionar una clase CabeceraPagina que permita mostrar un título, indicarle si queremos que aparezca centrado, a derecha o izquierda.
<html> <head> <title>Pruebas</title> </head> <body> <?php class CabeceraPagina { private $titulo; private $ubicacion; public function __construct($tit,$ubi) { $this->titulo=$tit; $this->ubicacion=$ubi; } public function graficar() { echo '<div style="font-size:40px;text-align:'.$this->ubicacion.'">'; echo $this->titulo; echo '</div>'; } } $cabecera=new CabeceraPagina('El blog del programador','center'); $cabecera->graficar(); ?> </body> </html>
Ahora podemos ver como cambió la sintaxis para la definición del constructor:
public function __construct($tit,$ubi) { $this->titulo=$tit; $this->ubicacion=$ubi; }
Hay que tener mucho cuidado cuando definimos el constructor, ya que el más mínimo error (nos olvidamos un caracter de subrayado, cambiamos una letra de la palabra construct) nuestro algoritmo no funcionará correctamente ya que nunca se ejecutará este método (ya que no es el constructor).
Veamos como se modifica la llamada al constructor cuando se crea un objeto:
$cabecera=new CabeceraPagina('El blog del programador','center'); $cabecera->graficar();
Es decir el constructor se llama en la misma línea donde creamos el objeto, por eso disponemos después del nombre de la clase los parámetros:
$cabecera=new CabeceraPagina('El blog del programador','center');
Generalmente todo aquello que es de vital importancia para el funcionamiento inicial del objeto se lo pasamos mediante el constructor.