Saltar al contenido principal

Constructor

El constructor de los objetos se define mediante el método mágico __construct. Puede o no tener parámetros, pero sólo puede haber un único constructor.

<?php
class Persona {
private string $nombre;

public function __construct(string $nom) {
$this->nombre = $nom;
}

public function imprimir(){
echo $this->nombre;
echo '<br>';
}
}

$bruno = new Persona("Bruno Díaz");
$bruno->imprimir();

Constructores en PHP 8

Una de las grandes novedades que ofrece PHP 8 es la simplificación de los constructores con parámetros, lo que se conoce como promoción de las propiedades del constructor.

Para ello, en vez de tener que declarar las propiedades como privadas o protegidas, y luego dentro del constructor tener que asignar los parámetros a estás propiedades, el propio constructor promociona las propiedades.

Veámoslo mejor con un ejemplo. Imaginemos una clase Punto donde queramos almacenar sus coordenadas:

<?php
class Punto {
protected float $x;
protected float $y;
protected float $z;

public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
}

En PHP 8, quedaría del siguiente modo (mucho más corto, lo que facilita su legibilidad):

<?php
class Punto {
public function __construct(
protected float $x = 0.0,
protected float $y = 0.0,
protected float $z = 0.0,
) {}
}
El orden importa

A la hora de codificar el orden de los elementos debe ser:

<?php
declare(strict_types=1);

class NombreClase {
// propiedades

// constructor

// getters - setters

// resto de métodos
}
?>