Dos mundos en un mismo lenguaje: ¿por qué es importante?
\nCuando hablamos de PHP, inmediatamente viene a la mente el clásico enfoque orientado a objetos (POO). Clases, herencia, encapsulamiento: esa es la base que se enseña en todos los cursos. Pero hay otra cara de la moneda: el enfoque funcional. ¿Y sabes qué? PHP sabe hacer ambas cosas, y muy bien.
\nEn este artículo no vamos a discutir cuál es mejor. Analizaremos cuándo y qué enfoque usar para que tu código no solo sea bonito, sino también rápido. Si programas en PHP y quieres ir más allá de "simplemente funciona", este artículo es para ti.
\n\nPHP orientado a objetos: un clásico que nunca pasa de moda
\nLa POO en PHP se trata de estructura y reutilización. Creas clases que describen las entidades de tu aplicación: usuario, pedido, producto. Cada clase es responsable de su propia área.
\n\nEjemplo: trabajar con un usuario mediante POO
\nVeamos un ejemplo típico. Supongamos que necesitamos crear un usuario y enviarle un correo de bienvenida.
\n<?php\nclass User {\n private string $name;\n private string $email;\n\n public function __construct(string $name, string $email) {\n $this->name = $name;\n $this->email = $email;\n }\n\n public function sendWelcomeEmail(): void {\n $subject = "¡Bienvenido, {$this->name}!";\n $message = "Hola, {$this->name}. Nos alegra verte en nuestro sitio.";\n mail($this->email, $subject, $message);\n }\n\n public function getName(): string {\n return $this->name;\n }\n}\n\n$user = new User("Iván", "ivan@example.com");\n$user->sendWelcomeEmail();\necho "Correo enviado al usuario: " . $user->getName();\n?>\nAquí todo es lógico: los datos (nombre, email) y los métodos (enviar correo) están en un mismo lugar. Esto es práctico cuando tienes muchas operaciones diferentes con una misma entidad.
\n\nVentajas de la POO en PHP
\n- \n
- Legibilidad: el código está dividido en bloques lógicos, es fácil encontrar el método necesario. \n
- Herencia: puedes crear una clase base y extenderla. \n
- Encapsulamiento: los datos están protegidos contra cambios accidentales (private/protected). \n
- Polimorfismo: una misma interfaz, diferentes implementaciones. \n
Desventajas de la POO
\n- \n
- Redundancia: para una tarea simple (por ejemplo, formatear una cadena), escribir una clase es excesivo. \n
- Estado: los objetos almacenan estado, lo que puede provocar errores si no se controlan las mutaciones. \n
- Memoria: cada objeto ocupa más memoria que una función simple. \n
PHP funcional: minimalismo y pureza
\nLa programación funcional en PHP no es solo "escribir una función". Es una filosofía donde las funciones son las protagonistas. No tienen efectos secundarios, no modifican el estado global y siempre devuelven un resultado predecible.
\n\nEjemplo: la misma tarea, pero de forma funcional
\nResolvamos la misma tarea —crear un usuario y enviar un correo— pero sin clases.
\n<?php\nfunction createUser(string $name, string $email): array {\n return ['name' => $name, 'email' => $email];\n}\n\nfunction sendWelcomeEmail(array $user): void {\n $subject = "¡Bienvenido, {$user['name']}!";\n $message = "Hola, {$user['name']}. Nos alegra verte en nuestro sitio.";\n mail($user['email'], $subject, $message);\n}\n\nfunction getUserName(array $user): string {\n return $user['name'];\n}\n\n$user = createUser("Iván", "ivan@example.com");\nsendWelcomeEmail($user);\necho "Correo enviado al usuario: " . getUserName($user);\n?>\n¿Se ve más simple? Sí. Pero aquí no hay encapsulamiento: los datos son solo un array. Sin embargo, cada función hace una sola acción y no sabe nada sobre el "mundo exterior".
\n\n