Menu
Coddy logo textTech

Constructor (__construct)

Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy — lección 7 de 91.

El método __construct es un método especial que se ejecuta automáticamente cuando creas un nuevo objeto. Inicializa las propiedades del objeto.

Aquí hay un ejemplo de una clase con un constructor:

<?php
class Dog {
    public $name;
    public $breed;

    public function __construct($name, $breed) {
        $this->name = $name;
        $this->breed = $breed;
    }
}

El método __construct toma parámetros y los asigna a propiedades usando $this.

Crea objetos usando el constructor:

$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");

Cuando llamas a new Dog("Rex", "German Shepherd"), PHP llama automáticamente a __construct y pasa los argumentos.

Accede a las propiedades que fueron establecidas por el constructor:

echo $rex->name . "\n";
echo $rex->breed . "\n";
echo $buddy->name . "\n";
echo $buddy->breed . "\n";

Salida:

Rex
German Shepherd
Buddy
Golden Retriever

También puedes tener un constructor con valores de parámetros por defecto:

class Cat {
    public $name;
    public $age;

    public function __construct($name, $age = 1) {
        $this->name = $name;
        $this->age = $age;
    }
}

$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers");  // la edad por defecto es 1

echo $fluffy->name . " is " . $fluffy->age . " years old\n";
echo $whiskers->name . " is " . $whiskers->age . " years old\n";

Resultado:

Fluffy is 3 years old
Whiskers is 1 years old

Punto clave: El método __construct asegura que cada objeto esté configurado correctamente con sus datos iniciales al ser creado. Te evita tener que establecer las propiedades manualmente después de la creación del objeto.

challenge icon

Desafío

Fácil

Se te proporcionan archivos PHP (book.php y driver.php) para implementar un sistema de libros.

Tu tarea es:

  • Completa la clase Book en book.php con un método __construct que inicialice las propiedades $title, $author y $pages
  • En driver.php, importa y crea un objeto de libro para "Harry Potter" de "J.K. Rowling" con 400 páginas

Sigue los comentarios TODO en cada archivo.

Hoja de referencia

El método __construct es un método especial que se ejecuta automáticamente cuando creas un nuevo objeto para inicializar sus propiedades.

Define un constructor en una clase:

<?php
class Dog {
    public $name;
    public $breed;

    public function __construct($name, $breed) {
        $this->name = $name;
        $this->breed = $breed;
    }
}

Crea objetos usando el constructor:

$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");

Accede a las propiedades establecidas por el constructor:

echo $rex->name;  // Rex
echo $rex->breed;  // German Shepherd

Los constructores pueden tener valores de parámetros por defecto:

class Cat {
    public $name;
    public $age;

    public function __construct($name, $age = 1) {
        $this->name = $name;
        $this->age = $age;
    }
}

$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers");  // age defaults to 1

Pruébalo tú mismo

<?php
require_once 'book.php';

// TODO: Crear un objeto Book con:
// title: "Harry Potter", author: "J.K. Rowling", pages: 400
$myBook = ?;

echo "'" . $myBook->title . "' by " . $myBook->author . ", " . $myBook->pages . " pages\n";
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos