Método especial que se ejecuta automáticamente al crear un objeto y sirve para inicializar propiedades.
<?php
class Persona {
public $nombre;
public function __construct($nombre) {
$this->nombre = $nombre;
}
}
$p = new Persona("Jair");
echo $p->nombre; // Jair
Al hacer new Persona("Jair"), el constructor asigna el nombre a la propiedad.
Función definida dentro de una clase. Representa una acción que el objeto puede realizar.
<?php
class Persona {
public function saludar() {
return "Hola!";
}
}
$p = new Persona();
echo $p->saludar(); // Hola!
$p->saludar() ejecuta la acción del objeto.
Permite que una clase hija reutilice propiedades y métodos de una clase padre.
<?php
class Animal {
public function sonido() {
return "Hace un sonido";
}
}
class Perro extends Animal {
// Hereda sonido()
}
$dog = new Perro();
echo $dog->sonido(); // Hace un sonido
Perro hereda el método
sonido() de
Animal.
Error controlado que se puede lanzar y capturar con try /
catch.
<?php
try {
throw new Exception("Algo salió mal");
} catch (Exception $e) {
echo $e->getMessage(); // Algo salió mal
}
El programa no se detiene: el error se maneja dentro del bloque catch.
Contrato que define métodos que una clase está obligada a implementar.
<?php
interface Forma {
public function area();
}
class Cuadrado implements Forma {
public $lado;
public function __construct($lado) {
$this->lado = $lado;
}
public function area() {
return $this->lado * $this->lado;
}
}
$c = new Cuadrado(4);
echo $c->area(); // 16
La interfaz Forma obliga a implementar el método
area().
Clase base que no se puede instanciar directamente y puede tener métodos abstractos y métodos normales.
<?php
abstract class Vehiculo {
abstract public function arrancar();
public function saludar() {
return "Soy un vehículo";
}
}
class Auto extends Vehiculo {
public function arrancar() {
return "El auto arrancó";
}
}
$a = new Auto();
echo $a->arrancar(); // El auto arrancó
Auto debe implementar el método abstracto
arrancar().
En PHP usamos $this para referirnos al objeto actual y
parent:: como equivalente a
super en otros lenguajes, para llamar métodos del padre.
<?php
class Padre {
public function mensaje() {
return "Soy el padre";
}
}
class Hijo extends Padre {
public function mensaje() {
// Llamamos al método del padre y agregamos texto
return parent::mensaje() . " y soy el hijo";
}
}
$h = new Hijo();
echo $h->mensaje();
// Soy el padre y soy el hijo
parent::mensaje() llama al método de la clase padre.
Dentro de la clase hija, $this se refiere al objeto actual.