Curso de PHP
Programación orientada a objetos en PHP: conceptos básicos
Por Víctor Peña · Publicado el

Hola, ¿cómo están? Continuando con el curso de PHP, hoy empezamos el bloque de programación orientada a objetos, que se abrevia POO.
Esta lección es conceptual a propósito. Antes de escribir la primera clase conviene entender qué problema resuelve todo esto, porque si no, la POO parece una complicación innecesaria.
¡Empecemos!
El problema que resuelve
Hasta ahora hemos escrito código procedimental: variables sueltas y funciones que las manipulan. Funciona perfectamente para programas pequeños.
Imagina ahora un sistema de gestión de mascotas:
<?php
$nombreMascota = "Nupi";
$tipoMascota = "Perro";
$edadMascota = 3;
function describirMascota($nombre, $tipo, $edad) { /* ... */ }
function cumplirAnos($edad) { /* ... */ }
¿Y si tienes cien mascotas? ¿Y si cada una tiene doce datos? Terminas con cientos de variables sueltas y funciones que reciben una lista interminable de parámetros. Nada indica que esas variables van juntas, y nada impide que alguien asigne una edad negativa.
La POO propone otra idea: agrupar los datos y las funciones que operan sobre ellos en una sola unidad.
Clases y objetos
Los dos conceptos base:
Una clase es un molde. Define qué datos y qué comportamientos tendrá algo, pero no es ese algo. Es el plano de una casa, no la casa.
Un objeto es lo que se fabrica con ese molde. De una clase Mascota puedes crear miles de objetos, cada uno con sus propios datos.
<?php
class Mascota
{
public string $nombre;
public string $tipo;
public int $edad;
public function describir(): string
{
return "{$this->nombre} es un {$this->tipo} de {$this->edad} años";
}
}
$nupi = new Mascota();
$nupi->nombre = "Nupi";
$nupi->tipo = "Perro";
$nupi->edad = 3;
echo $nupi->describir(); // Nupi es un Perro de 3 años
Los datos se llaman propiedades o atributos, y las funciones dentro de la clase se llaman métodos.
Fíjate en $this: dentro de la clase, se refiere al objeto concreto sobre el que se está trabajando. Cuando llamas $nupi->describir(), $this es $nupi.
Y fíjate en la flecha ->: es la forma de acceder a lo que hay dentro de un objeto.
Los cuatro pilares
La POO se apoya en cuatro ideas. Las vamos a ver una por una en las próximas lecciones, pero conviene tener el mapa completo desde ahora.
1. Abstracción
Consiste en quedarte solo con lo que importa para tu problema.
Una mascota real tiene miles de características. Si tu sistema es un refugio de animales, te interesan el nombre, el tipo, la edad y las vacunas. Si fuera una clínica veterinaria, te interesarían otras. La misma realidad, modelos distintos.
Abstraer bien es la diferencia entre un sistema manejable y uno lleno de datos que nadie usa.
2. Encapsulamiento
Consiste en proteger los datos internos y exponer solo lo necesario.
En el ejemplo de arriba, cualquiera puede hacer $nupi->edad = -5. El encapsulamiento evita eso: los datos se declaran privados y se accede a ellos por métodos que validan.
<?php
class Mascota
{
private int $edad;
public function setEdad(int $edad): void
{
if ($edad < 0) {
throw new InvalidArgumentException("La edad no puede ser negativa");
}
$this->edad = $edad;
}
}
Es la idea de un cajero automático: usas los botones, no metes la mano en la máquina.
3. Herencia
Consiste en crear una clase a partir de otra, aprovechando lo que ya tiene.
Si Perro y Gato comparten el 80 % de lo que hace Mascota, no repites ese código: heredan de ella y añaden solo lo suyo.
<?php
class Perro extends Mascota
{
public function ladrar(): string
{
return "¡Guau!";
}
}
Perro tiene todo lo de Mascota más lo propio.
4. Polimorfismo
Consiste en que objetos distintos respondan al mismo mensaje a su manera.
Si Perro y Gato tienen ambos un método hacerSonido(), puedes recorrer una lista de mascotas y llamarlo sin preguntar de qué tipo es cada una: cada objeto sabe qué le corresponde hacer.
<?php
foreach ($mascotas as $mascota) {
echo $mascota->hacerSonido(); // cada una responde distinto
}
Es lo que permite añadir un Conejo mañana sin tocar ese bucle.
Por qué vale la pena
Las ventajas concretas, más allá de la teoría:
- El código se organiza solo. Todo lo relacionado con mascotas vive en la clase
Mascota. - Se reutiliza sin copiar y pegar, gracias a la herencia.
- Se protege de usos indebidos, gracias al encapsulamiento.
- Crece sin romperse: añadir un tipo nuevo no obliga a tocar lo que ya funciona.
- Es lo que usan todos los frameworks. Laravel, Symfony y prácticamente cualquier herramienta profesional de PHP están construidos sobre POO. Sin esta base, no puedes usarlos con criterio.
Cuándo no hace falta
Seamos honestos: la POO no es obligatoria ni siempre mejor. Un script de treinta líneas que procesa un archivo no gana nada envuelto en clases.
La POO empieza a pagar cuando el sistema crece, cuando varias personas tocan el mismo código o cuando hay conceptos del negocio que se repiten. Que es, dicho sea de paso, el caso de casi cualquier aplicación real.
Lo que viene
Las próximas lecciones desarrollan cada pieza:
- Clases y objetos: constructores, propiedades y métodos en detalle.
- Herencia y clases anónimas.
- Encapsulamiento con los modificadores de acceso.
- Polimorfismo, clases abstractas e interfaces.
- Traits, namespaces y miembros estáticos.
- Excepciones y gestión de errores.
Cada una construye sobre la anterior, así que conviene seguirlas en orden.
Para cerrar
La programación orientada a objetos no es una forma más complicada de hacer lo mismo: es una forma de que un programa pueda crecer sin volverse inmanejable.
Si de esta lección te llevas una sola idea, que sea esta: una clase agrupa los datos y las operaciones que van juntos, y un objeto es una instancia concreta de esa agrupación.
En la siguiente lección lo llevamos a la práctica.
Saludos y éxitos.
Norvic Software
Desarrollamos el software que tu empresa necesita
Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.
- Chatbots con Inteligencia Artificial
- Creación de agentes de IA
- Integración de IA en tus sistemas
- Desarrollo de software a medida
- Aplicaciones móviles iOS y Android
- Consultoría y asesoramiento técnico
Cotización sin costo · Respuesta directa por WhatsApp