Clases y Objetos en PHP: Guía completa de POO con ejemplos

Clases y Objetos en PHP 🧩

Objetivo: Esta guía está pensada para alguien con conocimientos básicos de programación en PHP (variables, funciones y estructuras de control). Aquí aprenderás desde los conceptos más importantes de la Programación Orientada a Objetos (POO) hasta ejemplos prácticos explicados paso a paso.


🔎 ¿Qué es la POO? (explicación clara)

La Programación Orientada a Objetos (POO) es una forma de organizar el código usando clases y objetos:

  • Clase: es una plantilla (como el plano de una casa). Define propiedades (datos) y métodos (comportamientos).
  • Objeto: es una instancia de la clase, como una casa construida a partir del plano.

¿Por qué usarla? Porque ayuda a:

  • Organizar el código.
  • Reusar código (no repetir).
  • Modelar entidades del mundo real (usuario, producto, carrito).
  • Facilitar mantenimiento y pruebas.

🏗️ Sintaxis básica: definir una clase paso a paso

Ejemplo básico (desglosado)

<?php
class Persona {
    public string $nombre;   // propiedad pública
    private int $edad;       // propiedad privada

    // Constructor: se ejecuta al crear la instancia
    public function __construct(string $nombre, int $edad) {
        $this->nombre = $nombre; // asigna la propiedad 'nombre'
        $this->edad = $edad;     // asigna la propiedad 'edad'
    }

    // Método: comportamiento de la clase
    public function saludar(): string {
        return "Hola, soy {$this->nombre} y tengo {$this->edad} años.";
    }
}

// Crear (instanciar) un objeto
$p = new Persona("Andrés", 30);
echo $p->saludar(); // Muestra: Hola, soy Andrés y tengo 30 años.

Explicación línea por línea

  • class Persona { ... } define la plantilla.
  • public string $nombre; es una propiedad accesible desde fuera.
  • private int $edad; es una propiedad que sólo la clase puede usar directamente.
  • __construct(...) es el constructor: recibe parámetros y prepara el objeto.
  • $this->nombre refiere a la propiedad nombre del objeto actual.
  • new Persona(...) crea una instancia (un objeto).

⚙️ Constructores y property promotion (PHP 8)

Antes de PHP 8 había que declarar propiedades y luego asignarlas en el constructor. PHP 8 introdujo constructor property promotion para ahorrar código.

Forma clásica (PHP 7.x y anterior):

class UsuarioOld {
    public string $nombre;
    private string $email;

    public function __construct(string $nombre, string $email) {
        $this->nombre = $nombre;
        $this->email = $email;
    }
}

Con property promotion (PHP 8+):

class Usuario {
    public function __construct(
        public string $nombre,
        private string $email
    ) {}
}
$u = new Usuario("Ana", "ana@example.com");
echo $u->nombre; // Ana

Consejo: usa promotion para DTOs y clases simples; para lógica compleja dentro del constructor usa la forma clásica.


🔒 Visibilidad: public, protected, private (con ejemplos prácticos)

  • public: accesible desde cualquier sitio.
  • protected: accesible en la clase y sus subclases.
  • private: accesible sólo dentro de la misma clase.

Ejemplo con getters/setters (buena práctica):

class Cuenta {
    private float $saldo = 0.0;

    public function depositar(float $monto): void {
        if ($monto <= 0) throw new InvalidArgumentException("Monto inválido");
        $this->saldo += $monto;
    }

    // getter público para consultar saldo
    public function obtenerSaldo(): float {
        return $this->saldo;
    }
}

$c = new Cuenta();
$c->depositar(100.50);
echo $c->obtenerSaldo(); // 100.5

Por qué usar private ? Para proteger el estado del objeto y validar cambios desde métodos controlados.


🧲 Static: propiedades y métodos compartidos

Las propiedades/métodos static pertenecen a la clase (no a la instancia).

class Contador {
    public static int $cuenta = 0;

    public static function incrementar(): void {
        self::$cuenta++;
    }
}

Contador::incrementar();
echo Contador::$cuenta; // 1

Cuándo usar: datos globales a todas las instancias (por ejemplo, contador de objetos, configuración compartida).


🧬 Herencia y override (sobrescribir métodos)

Permite crear clases hijas a partir de una clase padre.

class Animal {
    public function hablar(): string {
        return "...";
    }
}

class Perro extends Animal {
    public function hablar(): string {
        return "Guau";
    }
}

$perro = new Perro();
echo $perro->hablar(); // Guau

Nota práctica: si la clase hija necesita inicializar propiedades del padre, usa parent::__construct(...).


🧠 Abstract classes e Interfaces (contratos)

Abstract class: sirve como base y puede definir tanto métodos concretos como abstractos (sin implementación).

abstract class Figura {
    abstract public function area(): float;
    public function descripcion(): string {
        return "Soy una figura";
    }
}

class Rectangulo extends Figura {
    public function __construct(private float $ancho, private float $alto) {}
    public function area(): float {
        return $this->ancho * $this->alto;
    }
}

Interface: define un contrato puro; cualquier clase que implemente la interface debe definir esos métodos.

interface Jsonable {
    public function toJson(): string;
}

class Producto implements Jsonable {
    public function __construct(public string $nombre, public float $precio) {}
    public function toJson(): string {
        return json_encode(get_object_vars($this));
    }
}

Cuándo usar cada uno:

  • Usa interface cuando quieras garantizar métodos sin preocuparte por la implementación.
  • Usa abstract cuando quieras una base con algo de comportamiento y también que obligue a implementar ciertos métodos.

🧩 Traits: reusar comportamiento sin herencia

Los traits permiten compartir métodos entre clases sin forzar una relación padre-hijo.

trait Logger {
    public function log(string $msg): void {
        echo "[LOG] $msg
";
    }
}

class Servicio {
    use Logger;
}

$s = new Servicio();
$s->log("Listo."); // [LOG] Listo.

Precaución: evita abusar de traits; úsalos para pequeñas utilidades reutilizables.


✨ Métodos mágicos (mecanismos automáticos útiles)

Los métodos mágicos son funciones especiales que PHP llama en determinados eventos:

  • __construct() — al crear la instancia.
  • __destruct() — al destruir la instancia.
  • __toString() — cuando el objeto se trata como string.
  • __get($name) / __set($name, $value) — al acceder a propiedades inaccesibles o inexistentes.
  • __call($name, $arguments) — llamadas a métodos no existentes en la instancia.
  • __callStatic(...) — llamadas a métodos estáticos inexistentes.
  • __clone() — al clonar un objeto.
  • __sleep() / __wakeup() — para serialización.

Ejemplo sencillo con __get y __toString:

class Caja {
    private array $data = [];
    public function __get($k) { return $this->data[$k] ?? null; }
    public function __set($k, $v) { $this->data[$k] = $v; }
    public function __toString(): string { return json_encode($this->data); }
}

$c = new Caja();
$c->hola = "mundo";
echo $c->hola; // mundo
echo $c; // {"hola":"mundo"}

🪄 Clonación y copiar objetos correctamente

clone $a crea una copia superficial (shallow copy). Si las propiedades incluyen objetos, ambas instancias compartirán referencias a esos objetos a menos que implementes __clone().

Ejemplo de clonación profunda (deep clone):

class Sub {
    public function __construct(public array $items = []) {}
}

class Padre {
    public Sub $sub;
    public function __construct() {
        $this->sub = new Sub();
    }
    public function __clone() {
        // clonar el objeto contenido para no compartir la referencia
        $this->sub = clone $this->sub;
    }
}

$a = new Padre();
$a->sub->items[] = 1;

$b = clone $a;
$b->sub->items[] = 2;

print_r($a->sub->items); // [1]
print_r($b->sub->items); // [1,2]

🛠️ Ejemplo práctico extendido: mini-CRUD en memoria (explicado)

<?php
// Entidad User simple
class User {
    public function __construct(
        public int $id,
        public string $name,
        public string $email
    ) {}
}

// Repositorio: responsable de almacenar/recuperar usuarios
class UserRepository {
    /** @var array<int, User> */
    private array $store = [];

    public function save(User $u): void {
        $this->store[$u->id] = $u;
    }

    public function find(int $id): ?User {
        return $this->store[$id] ?? null;
    }

    public function all(): array {
        return array_values($this->store);
    }

    public function delete(int $id): void {
        unset($this->store[$id]);
    }
}

// Uso:
$repo = new UserRepository();
$repo->save(new User(1, 'María', 'maria@example.com'));
$repo->save(new User(2, 'Luis', 'luis@example.com'));

$user = $repo->find(1);
if ($user) {
    echo $user->name; // María
}

print_r($repo->all());

Explicación práctica:

  • UserRepository actúa como una capa de persistencia (aunque aquí sea en memoria).
  • Mantén la lógica de almacenamiento separada de la entidad User (principio de responsabilidad única).

⚠️ Manejo de errores y validaciones (ejemplo)

class Validator {
    public static function emailValido(string $email): bool {
        return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
    }
}

try {
    $email = "no-valido";
    if (!Validator::emailValido($email)) {
        throw new InvalidArgumentException("Email inválido: $email");
    }
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
}

Tip: usa excepciones para errores que no deberían ocurrir en el flujo normal y valida siempre datos de entrada.


✅ Buenas prácticas resumidas

  • Usa type hints (parámetros y retornos).
  • Valida datos de entrada (excepciones o resultados controlados).
  • Prefiere composición sobre herencia (usa objetos dentro de objetos cuando sea más lógico).
  • Mantén clases pequeñas y con una sola responsabilidad (SRP).
  • Documenta con docblocks y escribe pruebas unitarias (PHPUnit).
  • No hagas propiedades públicas si necesitas controlar acceso; usa getters/setters o readonly en PHP 8.1+.

✍️ Ejercicios para practicar (con pistas)

  1. Crear una clase Producto con id, nombre, precio. Implementa descuento(float $p) que reduzca el precio en p%.
    • Pista: valida que el porcentaje sea entre 0 y 100.
  2. Crear interfaz Persistible con métodos save() y delete(). Haz que UserRepository implemente esta interfaz.
  3. Ejercicio avanzado: crear Order que tenga una lista de Product. Implementa método total() que sume precios. Asegura que Order pueda serializarse a JSON.

📚 Glosario rápido

  • Instancia / objeto: copia concreta de una clase.
  • Propiedad: variable dentro de la clase.
  • Método: función definida en la clase.
  • Constructor: método que inicializa la instancia.
  • Visibilidad: control de acceso (public/protected/private).
  • Trait: mezcla de métodos reutilizables.
  • Interface: contrato de métodos sin implementación.

❓ FAQ (rápidas)

¿Cuándo usar una clase vs un array?
Usa una clase cuando quieras representar una entidad con comportamiento y reglas; usa arrays para datos sencillos y temporales.

¿Pueden las clases tener funciones fuera de clases?
Sí, pero mantener la lógica relacionada dentro de clases mejora la organización.

¿Debo usar siempre getters/setters en PHP?
No siempre; para DTOs simples public es aceptable. Para lógica/validación usa getters/setters.


🏁 Resumen final

  • Aprende los conceptos básicos (clase, objeto, constructor, $this).
  • Practica con ejemplos: crear clases, usar herencia, interfaces y traits.
  • Usa validaciones y excepciones para código robusto.
  • Aplica buenas prácticas: tipado, SRP y pruebas.

Video Breve

Artículos relacionados

Condicionales en PHP: if, else, elseif, switch y ejemplos prácticos

Tutoriales > php

Condicionales en PHP: if, else, elseif, switch y ejemplos prácticos

Aprende a usar condicionales en PHP paso a paso. Descubre cómo funcionan if, else, elseif, switch, el operador ternario y ?? con ejemplos prácticos y buenas prácticas de programación.

Leer más
Cómo trabajar con variables en PHP: concatenación, operaciones y ejemplos prácticos

Tutoriales > php

Cómo trabajar con variables en PHP: concatenación, operaciones y ejemplos prácticos

Aprende a usar variables en PHP con ejemplos claros. Descubre cómo declararlas, concatenar cadenas de texto, realizar operaciones matemáticas y aplicar operadores en tus proyectos de programación web.

Leer más
Arrays en PHP: Guía Completa con Ejemplos

Tutoriales > php

Arrays en PHP: Guía Completa con Ejemplos

Aprende todo sobre los arrays en PHP: qué son, cómo se crean, tipos de arrays, funciones útiles y ejemplos prácticos para programadores principiantes.

Leer más
Bucles en PHP: while, do while, for, foreach y ejemplos prácticos

Tutoriales > php

Bucles en PHP: while, do while, for, foreach y ejemplos prácticos

Aprende todo sobre los bucles en PHP. Descubre cómo funcionan while, do while, for y foreach con ejemplos claros, además de cómo usar break y continue.

Leer más
Inicios en PHP: Todo lo que debes saber sobre variables y sus tipos

Tutoriales > php

Inicios en PHP: Todo lo que debes saber sobre variables y sus tipos

Aprende los fundamentos de PHP desde cero. Descubre qué son las variables, cómo se declaran, sus tipos principales y ejemplos prácticos para comenzar a programar en PHP.

Leer más
Clases y Objetos en PHP: Guía completa de POO con ejemplos

Tutoriales > php

Clases y Objetos en PHP: Guía completa de POO con ejemplos

Aprende Clases y Objetos en PHP (POO): sintaxis, propiedades, métodos, visibilidad, herencia, interfaces, traits, magic methods y ejemplos prácticos. Ideal para PHP 7/8+

Leer más
El asesinato de John F. Kennedy: misterio, conspiraciones y legado histórico

Terror > Crímenes

El asesinato de John F. Kennedy: misterio, conspiraciones y legado histórico

Descubre la historia del asesinato de John F. Kennedy, un crimen que conmocionó al mundo en 1963 y que aún hoy sigue rodeado de misterio y teorías de conspiración.

Leer más
Compatibilidad de Aries con otros signos: amor, amistad y trabajo

Astrología > Aries

Compatibilidad de Aries con otros signos: amor, amistad y trabajo

Descubre la compatibilidad de Aries con los demás signos del zodiaco en el amor, la amistad y el trabajo. Guía completa y detallada.

Leer más
IA en los negocios: cómo aprovecharla para crecer

Tecnología > Inteligencia Artificial

IA en los negocios: cómo aprovecharla para crecer

Descubre cómo aplicar la inteligencia artificial en los negocios para aumentar productividad, reducir costos y potenciar el crecimiento empresarial.

Leer más
Aries en el trabajo: características, fortalezas y profesiones ideales

Astrología > Aries

Aries en el trabajo: características, fortalezas y profesiones ideales

Descubre cómo es Aries en el trabajo y el dinero: sus características, fortalezas, debilidades y profesiones ideales según la astrología.

Leer más
Cómo trabajar con variables en PHP: concatenación, operaciones y ejemplos prácticos

Tutoriales > php

Cómo trabajar con variables en PHP: concatenación, operaciones y ejemplos prácticos

Aprende a usar variables en PHP con ejemplos claros. Descubre cómo declararlas, concatenar cadenas de texto, realizar operaciones matemáticas y aplicar operadores en tus proyectos de programación web.

Leer más
Qué son los agujeros negros y por qué fascinan a la ciencia

Astronomía > Universo

Qué son los agujeros negros y por qué fascinan a la ciencia

Los agujeros negros son uno de los fenómenos más misteriosos y fascinantes del universo. En este artículo exploramos qué son, cómo se forman y por qué despiertan tanta curiosidad en la ciencia moderna

Leer más
El futuro del trabajo con la inteligencia artificial

Tecnología > Inteligencia Artificial

El futuro del trabajo con la inteligencia artificial

Descubre cómo la inteligencia artificial transformará el futuro del trabajo. Conoce los empleos en riesgo, las nuevas oportunidades y cómo prepararte para el cambio.

Leer más
Independencia del Perú

Historia > Historia del Perú

Independencia del Perú

Descubre el proceso de la Independencia del Perú, un camino largo y complejo hacia la libertad. Conoce los eventos clave y figuras históricas que marcaron este importante capítulo en la historia peruana.

Leer más
Ted Bundy: El carismático asesino serial que aterrorizó a Estados Unidos

Terror > Crímenes

Ted Bundy: El carismático asesino serial que aterrorizó a Estados Unidos

Descubre la historia de Ted Bundy, uno de los asesinos seriales más infames de la historia. Conocido por su carisma y brutalidad, Bundy cometió crímenes atroces en los años 70, dejando una huella imborrable en la criminología. Conoce sus métodos, víctimas, captura y legado oscuro.

Leer más
Cómo la inteligencia artificial está cambiando la educación: beneficios, retos y futuro

Tecnología > Inteligencia Artificial

Cómo la inteligencia artificial está cambiando la educación: beneficios, retos y futuro

Descubre cómo la inteligencia artificial está transformando la educación con nuevas herramientas, personalización del aprendizaje y desafíos éticos.

Leer más
Tauro en la salud: puntos débiles, fortalezas y consejos de bienestar

Astrología > Tauro

Tauro en la salud: puntos débiles, fortalezas y consejos de bienestar

Descubre cómo es Tauro en la salud: sus puntos fuertes y débiles, órganos más sensibles y los mejores consejos de bienestar físico y emocional.

Leer más
Clases y Objetos en PHP: Guía completa de POO con ejemplos

Tutoriales > php

Clases y Objetos en PHP: Guía completa de POO con ejemplos

Aprende Clases y Objetos en PHP (POO): sintaxis, propiedades, métodos, visibilidad, herencia, interfaces, traits, magic methods y ejemplos prácticos. Ideal para PHP 7/8+

Leer más
Cómo crecer en TikTok en 2025 con estrategias efectivas

Tecnología > Redes Sociales

Cómo crecer en TikTok en 2025 con estrategias efectivas

Aprende las mejores estrategias para crecer en TikTok en 2025. Descubre cómo aumentar seguidores, conseguir más vistas y destacar en la plataforma.

Leer más
Cómo Dormir Mejor y Aumentar tu Productividad

Salud > Bienestar y hábitos

Cómo Dormir Mejor y Aumentar tu Productividad

Descubre cómo mejorar la calidad de tu sueño para aumentar tu productividad diaria. Aprende hábitos, técnicas y consejos prácticos para dormir mejor, tener más energía y optimizar tu rendimiento personal y profesional.

Leer más
Películas de dominio público hasta 2025: lista completa con sinopsis y géneros

Cine > Cine sin copyright

Películas de dominio público hasta 2025: lista completa con sinopsis y géneros

Descubre todas las películas que ya son de dominio público hasta 2025. Incluye lista completa con sinopsis, géneros y qué puedes hacer con ellas legalmente

Leer más
10 ideas para ganar dinero con Instagram

Tecnología > Redes Sociales

10 ideas para ganar dinero con Instagram

Descubre 10 formas efectivas de ganar dinero con Instagram en 2025, desde colaboraciones con marcas hasta la venta de productos digitales. Una guía práctica para emprendedores y creadores de contenido que buscan monetizar su presencia online.

Leer más
Situación de la influenza H3N2 subtipo K en el Perú: casos, riesgos y prevención

Salud > Infecciones #Perú

Situación de la influenza H3N2 subtipo K en el Perú: casos, riesgos y prevención

Conoce la situación actual de la influenza A H3N2 subtipo K en el Perú, casos reportados, medidas del Minsa, riesgos reales y recomendaciones para la población.

Leer más
Cómo crear contraseñas seguras y fáciles de recordar

Tecnología > Ciberseguridad

Cómo crear contraseñas seguras y fáciles de recordar

Aprende a crear contraseñas seguras y fáciles de recordar para proteger tus cuentas online sin complicaciones. Guía práctica con ejemplos y consejos.

Leer más
La Batalla de Tarapacá: Victoria Peruana

Historia > Perú vs Chile

La Batalla de Tarapacá: Victoria Peruana

Descubre la estrategia y consecuencias de la Batalla de Tarapacá, una victoria peruana clave en la historia militar sudamericana. Conoce los detalles del combate y su impacto en la región.

Leer más
Redes Sociales para Emprendimiento

Economía > Emprendimiento Digital

Redes Sociales para Emprendimiento

Aprende a utilizar las redes sociales para fomentar el emprendimiento y aumentar las ventas de tu negocio. Consejos y estrategias para el éxito.

Leer más
Configurar vps para proyectos de nodeJS en producción

Tutoriales > Servidores

Configurar vps para proyectos de nodeJS en producción

Aprende todo lo necesario para poner en producción tus proyectos de nodejs en un vps

Leer más
Software de Gestión para Veterinarias con Citas Online: La Clave para Modernizar tu Clínica

Salud > Veterinaria

Software de Gestión para Veterinarias con Citas Online: La Clave para Modernizar tu Clínica

Descubre por qué un software de gestión veterinaria SaaS con sistema de citas online puede transformar tu clínica veterinaria, optimizar tu agenda y mejorar la experiencia de tus clientes.

Leer más
Luis Alfredo Garavito: la historia del mayor asesino serial de Colombia

Terror > Crímenes

Luis Alfredo Garavito: la historia del mayor asesino serial de Colombia

Conoce la historia de Luis Alfredo Garavito, “La Bestia”, el asesino serial más temido de Colombia, responsable de más de 170 víctimas entre niños y adolescentes.

Leer más
Cómo es Géminis en el trabajo: fortalezas, debilidades y consejo

Astrología > Géminis

Cómo es Géminis en el trabajo: fortalezas, debilidades y consejo

Descubre cómo es Géminis en el ámbito laboral: sus fortalezas, debilidades y consejos para aprovechar su energía y creatividad en el trabajo.

Leer más
Condicionales en PHP: if, else, elseif, switch y ejemplos prácticos

Tutoriales > php

Condicionales en PHP: if, else, elseif, switch y ejemplos prácticos

Aprende a usar condicionales en PHP paso a paso. Descubre cómo funcionan if, else, elseif, switch, el operador ternario y ?? con ejemplos prácticos y buenas prácticas de programación.

Leer más