Dois mundos em uma linguagem: por que isso é importante?
\nQuando falamos de PHP, a primeira coisa que vem à mente é a clássica abordagem orientada a objetos (POO). Classes, herança, encapsulamento — essa é a base que se ensina em todos os cursos. Mas há outro lado da moeda — a abordagem funcional. E quer saber? O PHP sabe fazer ambos, e muito bem.
\nNeste artigo, não vamos discutir qual é melhor. Vamos entender quando e qual abordagem usar para que seu código não seja apenas bonito, mas também rápido. Se você programa em PHP e quer ir além do "apenas funciona", este artigo é para você.
\n\nPHP Orientado a Objetos: um clássico que nunca envelhece
\nPOO em PHP é sobre estrutura e reutilização. Você cria classes que descrevem as entidades da sua aplicação: usuário, pedido, produto. Cada classe é responsável por sua área de responsabilidade.
\n\nExemplo: trabalhando com usuário via POO
\nVamos ver um exemplo típico. Suponha que precisamos criar um usuário e enviar um e-mail de boas-vindas.
\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 = "Bem-vindo, {$this->name}!";\n $message = "Olá, {$this->name}. Ficamos felizes em vê-lo em nosso site.";\n mail($this->email, $subject, $message);\n }\n\n public function getName(): string {\n return $this->name;\n }\n}\n\n$user = new User("João", "joao@example.com");\n$user->sendWelcomeEmail();\necho "E-mail enviado para o usuário: " . $user->getName();\n?>\nAqui tudo é lógico: os dados (nome, e-mail) e os métodos (envio de e-mail) estão no mesmo lugar. Isso é conveniente quando você tem muitas operações diferentes com a mesma entidade.
\n\nVantagens da POO em PHP
\n- \n
- Legibilidade: o código é dividido em blocos lógicos, fácil de encontrar o método desejado. \n
- Herança: você pode criar uma classe base e estendê-la. \n
- Encapsulamento: os dados são protegidos contra alterações acidentais (private/protected). \n
- Polimorfismo: uma interface — implementações diferentes. \n
Desvantagens da POO
\n- \n
- Redundância: para uma tarefa simples (por exemplo, formatar uma string), escrever uma classe é exagero. \n
- Estado: os objetos armazenam estado, o que pode levar a bugs se as mutações não forem controladas. \n
- Memória: cada objeto ocupa mais memória do que uma função simples. \n
PHP Funcional: minimalismo e pureza
\nProgramação funcional em PHP não é apenas "escrever uma função". É uma filosofia onde as funções são as protagonistas. Elas não têm efeitos colaterais, não alteram o estado global e sempre retornam um resultado previsível.
\n\nExemplo: a mesma tarefa, mas de forma funcional
\nVamos resolver a mesma tarefa — criar um usuário e enviar um e-mail — mas sem classes.
\n<?php\nfunction createUser(string $name, string $email): array {\n return ['name' => $name, 'email' => $email];\n}\n\nfunction sendWelcomeEmail(array $user): void {\n $subject = "Bem-vindo, {$user['name']}!";\n $message = "Olá, {$user['name']}. Ficamos felizes em vê-lo em nosso site.";\n mail($user['email'], $subject, $message);\n}\n\nfunction getUserName(array $user): string {\n return $user['name'];\n}\n\n$user = createUser("João", "joao@example.com");\nsendWelcomeEmail($user);\necho "E-mail enviado para o usuário: " . getUserName($user);\n?>\nParece mais simples? Sim. Mas aqui não há encapsulamento — os dados são apenas um array. Porém, cada função faz apenas uma ação e não sabe nada sobre o "mundo exterior".
\n\n