El constructor es un método especial dentro de una clase, se suele utilizar para darle un valor a los atributos del objeto al crearlo.
Es el primer método que se ejecuta al crear el objeto y se llama automáticamente al crearlo. Este método puede recibir parámetros como cualquier otro método y para pasárselos tenemos que pasarle los parámetros al objeto. El constructor NO DEVUELVE ningún dato.
Podemos definir un constructor en una clase de la siguiente forma:
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).
Veamos cómo podemos implementar el constructor en una clase llamada Coche:
<?php // Definimos la clase class Coche{ // Atributos public $modelo; public $color; public $velocidad; // Constructor public function __construct($modelo, $color, $velocidad = 0){ $this->modelo = $modelo; $this->color = $color; $this->velocidad = $velocidad; } //Métodos public function getColor(){ // Devolvemos un atributo return $this->color; } public function setColor($color){ //Le damos un valor a un atributo $this->color = $color; } public function acelerar(){ $this->velocidad++; } public function frenar(){ $this->velocidad--; } public function getVelocidad(){ return $this->velocidad; } public function mostrarInfo(){ // Llamamos a otros métodos $info = "<h1>Información del coche:</h1>"; $info.= "Modelo: ".$this->modelo; $info.= "<br/> Color: ".$this->getColor(); $info.= "<br/> Velocidad: ".$this->getVelocidad(); return $info; } } ?> <!DOCTYPE HTML> <html lang="es"> <head> <meta charset="utf-8"/> <title>El constructor</title> </head> <body> <?php // Creamos el objeto / Instanciamos la clase y le pasamos los parámetros del constructor $coche = new Coche("BMW VICTOR", "ROJO", 100); // Mostramos la información del primer coche echo $coche->mostrarInfo(); $coche2 = new Coche("SEAT 500", "VERDE"); // Mostramos la información del segundo coche echo $coche2->mostrarInfo(); ?> </body> </html>
Esto mostrará lo siguiente:
Información del coche:
Modelo: BMW VICTOR
Color: ROJO
Velocidad: 100
Información del coche:
Modelo: SEAT 500
Color: VERDE
Velocidad: 0
Muestra la información de los dos objetos, hemos reutilizado la clase para generar dos coches y además le hemos pasado como parámetros al constructor unos valores para sus atributos.
En el segundo objeto no le hemos pasado la velocidad por tanto la velocidad está a cero que es el valor que tenía el parámetro opcional.
Con esto ya sabemos utilizar los constructores en las clases, por regla general toda aquella información imprescindible para el funcionamiento del objeto debe ser cargada en el constructor.