Carregando...

Herança

Herança em PHP é um dos pilares da programação orientada a objetos (OOP) que permite que uma classe filha utilize propriedades e métodos de uma classe pai. Esse recurso é essencial para reduzir código redundante, melhorar a manutenção e permitir a criação de sistemas escaláveis e estruturados. Em projetos PHP complexos, a herança facilita a criação de hierarquias de classes e simplifica a arquitetura de software.
A herança é usada quando múltiplas classes compartilham comportamentos semelhantes e você deseja definir esses comportamentos em uma classe pai e permitir que classes filhas os estendam ou personalizem. Por exemplo, em um sistema de gerenciamento de usuários, pode-se ter uma classe User genérica e classes especializadas como Admin e Customer que herdam dela. PHP utiliza palavras-chave como extends, protected, public e parent:: para implementar hierarquias de classes de maneira segura e eficiente.
Neste tutorial, você aprenderá a construir estruturas de classe reutilizáveis, aplicar princípios de OOP corretamente em PHP, e evitar erros comuns como vazamentos de memória, tratamento inadequado de erros e algoritmos ineficientes. A herança em PHP desempenha um papel crucial no desenvolvimento de aplicações profissionais, permitindo projetar sistemas robustos e escaláveis.

Exemplo Básico

php
PHP Code
<?php
// Classe pai
class Vehicle {
protected $brand;
protected $model;

public function __construct($brand, $model) {
$this->brand = $brand;
$this->model = $model;
}

public function getDetails() {
return "Marca: " . $this->brand . ", Modelo: " . $this->model;
}
}

// Classe filha herda Vehicle
class Car extends Vehicle {
private $doors;

public function __construct($brand, $model, $doors) {
parent::__construct($brand, $model);
$this->doors = $doors;
}

public function getDetails() {
return parent::getDetails() . ", Portas: " . $this->doors;
}
}

// Uso das classes
$myCar = new Car("Toyota", "Corolla", 4);
echo $myCar->getDetails();
?>

No exemplo acima, a classe Vehicle define propriedades protected $brand e $model e um método getDetails(). As propriedades protected são acessíveis apenas dentro da própria classe e por suas classes filhas, protegendo-as de acessos externos indevidos.
A classe Car estende Vehicle usando a palavra-chave extends, herdando todas as propriedades e métodos da classe pai. A propriedade privada $doors é adicionada apenas à classe filha, e o método getDetails() é sobrescrito. Ao chamar parent::getDetails(), o método da classe pai é preservado e estendido, demonstrando reutilização de código e boas práticas de OOP em PHP, fundamentais para projetos profissionais e escaláveis.

Exemplo Prático

php
PHP Code
<?php
// Classe pai: User
class User {
protected $name;
protected $email;

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

public function getProfile() {
return "Nome: " . $this->name . ", Email: " . $this->email;
}
}

// Classe filha: Admin
class Admin extends User {
private $permissions = [];

public function __construct($name, $email, $permissions = []) {
parent::__construct($name, $email);
$this->permissions = $permissions;
}

public function getProfile() {
return parent::getProfile() . ", Permissões: " . implode(", ", $this->permissions);
}

public function addPermission($permission) {
if (!in_array($permission, $this->permissions)) {
$this->permissions[] = $permission;
}
}
}

// Uso das classes
$admin = new Admin("Alice", "[email protected]", ["edit", "delete"]);
$admin->addPermission("create");
echo $admin->getProfile();
?>

No exemplo prático, a classe User define propriedades e métodos gerais para todos os usuários. A classe Admin herda User e adiciona funcionalidades específicas, como permissões. O construtor da classe filha chama parent::__construct() para inicializar corretamente as propriedades herdadas.
O método getProfile() é sobrescrito para incluir as permissões, e o método addPermission() evita duplicações. Este exemplo demonstra a aplicação prática de herança em sistemas de gerenciamento de usuários e a importância de boas práticas, como encapsulamento, reuso de código e manutenção de hierarquias claras em projetos PHP reais.

Boas práticas e armadilhas comuns ao usar herança em PHP:

  • Use propriedades protected para permitir acesso seguro pelas classes filhas.
  • Sempre chame parent::__construct() no construtor da classe filha.
  • Ao sobrescrever métodos, use parent::method() para manter a funcionalidade da classe pai.
  • Evite tornar todas as propriedades public.
    Erros comuns:

  • Declarar todas as propriedades como públicas.

  • Não chamar o construtor da classe pai.
  • Ignorar otimização de memória ao manipular grandes volumes de dados.
    Otimização e segurança:

  • Utilize estruturas de dados adequadas, como arrays e coleções.

  • Valide entradas antes de realizar operações.
  • Siga princípios SOLID e padrões de design para manter o código escalável e seguro.

📊 Tabela de Referência

PHP Element/Concept Description Usage Example
class Definição de classe class Vehicle { protected $brand; }
extends Herança de classe filha class Car extends Vehicle {}
protected Acessível apenas pela classe filha protected $model;
parent::__construct() Chama o construtor da classe pai parent::__construct($name, $email);
Method Overriding Sobrescrita de método na classe filha public function getProfile() { parent::getProfile(); }

A herança em PHP aumenta a reutilização de código, facilita manutenção e melhora a escalabilidade. Conceitos-chave incluem extends, protected, construtores e sobrescrita de métodos. Aplicar herança corretamente reduz código duplicado e cria hierarquias seguras e estruturadas.
Próximos passos recomendados incluem aprender sobre interfaces, classes abstratas e traits para maior flexibilidade. A prática contínua aprimora desempenho, segurança e design de classes. Consultar a documentação oficial do PHP e tutoriais avançados de OOP ajuda a consolidar o aprendizado.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

4
Perguntas
🎯
70%
Para Passar
♾️
Tempo
🔄
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo