PHP POO: El constructor de una clase

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.

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post