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.