Como definir métodos e propriedades protegidas em PHP?
O modificador protected
em PHP restringe o acesso a propriedades e métodos de uma classe, permitindo que apenas a própria classe e suas classes filhas os acessem.
Criando Propriedades e Métodos Protegidos
<?php
class Veiculo {
protected $marca;
protected $modelo;
public function setDados($marca, $modelo) {
$this->marca = $marca;
$this->modelo = $modelo;
}
protected function getDescricao() {
return "Veículo: $this->marca $this->modelo";
}
}
class Carro extends Veiculo {
public function exibirInformacoes() {
return $this->getDescricao();
}
}
?>
Criando um Objeto e Acessando Métodos Protegidos
<?php
$carro = new Carro();
$carro->setDados("Toyota", "Corolla");
echo $carro->exibirInformacoes();
?>
Explicação do Código
$marca
e$modelo
são protegidos, então não podem ser acessados diretamente de fora da classe.getDescricao()
também é protegido, podendo ser chamado apenas por métodos internos da classe ou suas subclasses.- Criamos a classe
Carro
, que herda deVeiculo
e pode acessar métodos protegidos.
Por que utilizar métodos e propriedades protegidas em PHP?
O uso de métodos e propriedades protegidas é essencial para a reutilização de código dentro de uma hierarquia de classes. Isso evita a exposição desnecessária de atributos enquanto mantém a flexibilidade da classe para ser estendida por subclasses.
Algumas aplicações:
- Criação de hierarquias de classes reutilizáveis
- Encapsulamento de regras de negócio dentro de classes base
- Facilidade na extensão e modificação de classes sem alterar código original
- Melhoria da organização do código em grandes sistemas
Dicas para quem está começando
- Use
protected
quando precisar acessar atributos dentro de subclasses. - Evite expor propriedades desnecessárias como
public
para manter a segurança do código. - Teste a visibilidade dos atributos para entender melhor como
protected
funciona. - Utilize a herança corretamente para aproveitar os métodos protegidos em classes filhas.
- Pratique criando diferentes classes e utilizando o modificador
protected
em cenários reais.
Contribuições de Daniel Moreira