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 RetrieverTambié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 oldPunto 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.
Desafío
FácilSe te proporcionan archivos PHP (book.php y driver.php) para implementar un sistema de libros.
Tu tarea es:
- Completa la clase
Bookenbook.phpcon un método__constructque inicialice las propiedades$title,$authory$pages - En
driver.php, importa y crea un objeto de libro para"Harry Potter"de"J.K. Rowling"con400páginas
Sigue los comentarios TODO en cada archivo.
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";
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
1Fundamentos de la POO
Archivos externosIntroducción a la POOClases frente a objetosLa palabra clave $thisMétodosPropiedadesConstructor (__construct)Destructor (__destruct)Repaso: calculadora simple4Herencia
Herencia básicaLa palabra clave parent::Sobrescritura de métodosLa palabra clave finalClases abstractasRepaso - Jerarquía de empleados7Encapsulación
Público, protegido, privadoModificadores de acceso en profundidadGetters y settersOcultación de la informaciónPromoción del constructor (8.0)Repaso: sistema de registros de estudiantes10Conceptos avanzados de OOP
Composición vs. herenciaInyección de dependenciasClases anónimasEnums (PHP 8.1)Fibras (PHP 8.1)Análisis profundo de la clonación de objetosGeneradores e iteradores13Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón Repository2Namespaces y carga automática
Introducción a los NamespacesLa palabra clave useEstándar de carga automática PSR-4Autoloader de ComposerRepaso: proyecto organizado5Interfaces y contratos
Introducción a las interfacesImplementación de interfacesImplementación de múltiples interfacesInterfaces vs. clase abstractaTipado con interfacesRepaso - Calculadora de formas8Métodos mágicos
Introducción a los métodos mágicos__toString y __debugInfo__get, __set, __isset, __unset__call y __callStatic__clone y clonación de objetos__serialize y __unserializeRepaso: colección personalizada3Propiedades de clase
Propiedades de instancia vs. estáticasConstantes en clasesMétodos y propiedades estáticosPropiedades privadas y protegidasPropiedades de solo lectura (PHP 8.1)Repaso: gestor de cuentas bancarias6Polimorfismo
Repaso de la sobrescritura de métodosPolimorfismo mediante interfacesAnotaciones de tipo y tipos uniónEnlace estático tardíoRepaso: procesador de pagos9Traits
Introducción a los TraitsUso de múltiples TraitsResolución de conflictos entre TraitsMétodos abstractos en TraitsTraits frente a la herencia12Patrones de diseño, parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón StrategyPractica por tu cuenta: Compilador de PHP online