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:

  1. El constructor es el primer método que se ejecuta cuando se crea un objeto.
  2. El constructor se llama automáticamente. Es decir es imposible de olvidarse llamarlo ya que se llamará automáticamente.
  3. Quien utiliza POO (Programación Orientada a Objetos) conoce el objetivo de este método.

Otras características de los constructores son:

  • El constructor se ejecuta inmediatamente luego de crear un objeto y no puede ser llamado nuevamente.
  • Un constructor no puede retornar dato.
  • Un constructor puede recibir parámetros que se utilizan normalmente para inicializar atributos.

  • El constructor es un método opcional, de todos modos es muy común definirlo.

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.

Retornar