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: 

  1. 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(); 
?>
  1. 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. 
Scroll al inicio