Clases y objetos en PHP
Bienvenido a una nueva lección de nuestro curso básico de PHP 8. Hoy nos metemos de lleno en la programación orientada a objetos (POO) con clases y objetos, la base para modelar el mundo real en tu código. Si ya entendiste qué es la POO, ahora vas a ponerle manos a la obra. Todo va a ser claro, práctico y con ejemplos que te van a flipar. ¡Empecemos!
¿Qué es una clase?
Una clase es como un plano o molde en la POO. Define cómo serán los objetos que crees: qué datos tendrán (propiedades o atributos) y qué podrán hacer (métodos). Piensa en una clase como la receta de un pastel: dice los ingredientes y los pasos, pero no es el pastel en sí.
¿Qué es un objeto?
Un objeto es lo que sale del molde: una instancia viva de la clase. Tiene sus propios valores (como «azul» para un coche) y puede usar los métodos de la clase (como «arrancar»). Cada objeto es independiente: si cambias uno, los demás no se afectan.
La receta básica para una clase en PHP es esta:
class NombreDeLaClase {
// Propiedades (datos)
public $propiedad1;
private $propiedad2;
protected $propiedad3;
// Métodos (acciones)
public function metodo() {
// Código aquí
}
}
- public: Cualquiera puede acceder.
- private: Solo la clase puede tocarlo.
- protected: La clase y sus «hijas» pueden usarlo (lo veremos con herencia).
Probando clases y objetos
¡Manos a la obra! Crea un archivo clases_objetos.php en curso_php8 (dentro de C:\xampp\htdocs) y prueba esto:
Ejemplo 1: Clase Televisor
<?php
class Televisor {
// Propiedades
public $marca;
public $modelo;
public $color;
public $tamanio;
// Constructor para inicializar
public function __construct($marca, $modelo, $color, $tamanio) {
$this->marca = $marca;
$this->modelo = $modelo;
$this->color = $color;
$this->tamanio = $tamanio;
}
// Método para combinar marca y modelo
public function marcaModelo() {
return "$this->marca modelo $this->modelo";
}
// Método para calcular antigüedad
public function calcularAntiguedad() {
$antiguedad = date("Y") - $this->modelo;
return "El televisor tiene $antiguedad años.";
}
}
// Creamos objetos
$televisor1 = new Televisor("Samsung", 2018, "Negro", "42 pulgadas");
echo $televisor1->marcaModelo() . "<br>";
echo $televisor1->calcularAntiguedad() . "<br>";
$televisor2 = new Televisor("LG", 1995, "Plomo", "32 pulgadas");
echo $televisor2->marcaModelo() . "<br>";
echo $televisor2->calcularAntiguedad() . "<br>";
?>
Samsung modelo 2018
El televisor tiene 7 años.
LG modelo 1995
El televisor tiene 30 años.
¿Qué pasó?
- Definimos la clase Televisor con propiedades y métodos.
- Usamos __construct para darle valores al crear el objeto.
- Creamos dos objetos ($televisor1 y $televisor2) con new.
- Llamamos a los métodos con ->.
¿Qué es $this?
$this es como decir «yo, el objeto actual». Si $televisor1 llama a marcaModelo(), $this->marca será «Samsung». Es la forma de usar las propiedades dentro de la clase.
Ejemplo práctico
Clase «Perro»
<?php
class Perro {
public $nombre;
public $raza;
public function __construct($nombre, $raza) {
$this->nombre = $nombre;
$this->raza = $raza;
}
public function ladrar() {
echo "$this->nombre dice: ¡Guau guau!<br>";
}
}
$miPerro = new Perro("Rex", "Pastor Alemán");
echo "Mi perro es un $miPerro->raza llamado $miPerro->nombre.<br>";
$miPerro->ladrar();
?>
Resultado:
Mi perro es un Pastor Alemán llamado Rex.
Rex dice: ¡Guau guau!
¿Qué pasó?
- Creamos un objeto y le dimos vida con sus propios datos y acciones.
Ejercicios para practicar
¡Tu turno de rockearlo! Ve a curso_php8 y prueba estos retos:
- Clase Persona
Crea persona.php:
<?php
class Persona {
public $nombre;
public $edad;
public $genero;
public function __construct($nombre, $edad, $genero) {
$this->nombre = $nombre;
$this->edad = $edad;
$this->genero = $genero;
}
public function presentarse() {
echo "Hola, soy $this->nombre, tengo $this->edad años y soy $this->genero.<br>";
}
}
$persona1 = new Persona("Ana", 25, "femenino");
$persona1->presentarse();
?>
- Clase Libro
Crea libro.php:
<?php
class Libro {
public $titulo;
public $autor;
public $paginas;
public $anio;
public function __construct($titulo, $autor, $paginas, $anio) {
$this->titulo = $titulo;
$this->autor = $autor;
$this->paginas = $paginas;
$this->anio = $anio;
}
public function mostrarInfo() {
echo "Libro: $this->titulo, escrito por $this->autor, con $this->paginas páginas.<br>";
}
public function calcularAnios() {
$anios = date("Y") - $this->anio;
echo "Han pasado $anios años desde su publicación.<br>";
}
}
$libro1 = new Libro("Cien años de soledad", "Gabriel García Márquez", 417, 1967);
$libro1->mostrarInfo();
$libro1->calcularAnios();
?>
Ejecuta en localhost/curso_php8/ y juega con los valores.
Consejos para no enredarte
- Constructor útil: Usa __construct para inicializar propiedades y ahorrarte pasos.
- -> es tu amigo: Accede a propiedades y métodos con él ($objeto->dato).
- Prueba todo: Crea varios objetos y juega con sus valores para entenderlos.
¡A por más POO!
¡Gran trabajo, máquina! Ahora las clases y objetos son tus herramientas para dar vida a tu código. En la próxima lección, veremos herencia para reutilizar y extender como ninjas. Si algo no te queda claro, déjame un comentario o revisa el código en GitHub.
Lo que aprendiste hoy, estrella:
- Clases: Moldes que definen propiedades y métodos.
- Objetos: Instancias vivas de esos moldes, cada una con sus datos.
- Constructor: Una forma fácil de darle valores al crear objetos.
- Ejemplos vivos: Hiciste televisores y perros como pro.
- Practicaste: Creaste personas y libros como crack.
- Tip del pro: Usa $this para que tus objetos sepan quiénes son.

