Como usar getters e setters em PHP?
Os getters e setters são métodos utilizados na programação orientada a objetos (OOP) para acessar e modificar propriedades privadas de uma classe, garantindo um controle maior sobre os dados armazenados.
Criando Getters e Setters em PHP
<?php
class Pessoa {
private $nome;
private $idade;
public function setNome($nome) {
$this->nome = $nome;
}
public function getNome() {
return $this->nome;
}
public function setIdade($idade) {
if ($idade > 0) {
$this->idade = $idade;
}
}
public function getIdade() {
return $this->idade;
}
}
?>
Acessando Propriedades com Getters e Setters
<?php
$pessoa = new Pessoa();
$pessoa->setNome("Carlos");
$pessoa->setIdade(25);
echo "Nome: " . $pessoa->getNome() . "\n";
echo "Idade: " . $pessoa->getIdade();
?>
Explicação do Código
- As propriedades
$nome
e$idade
são privadas, impedindo acesso direto. setNome()
esetIdade()
modificam os valores das propriedades.getNome()
egetIdade()
retornam os valores armazenados.- No método
setIdade()
, adicionamos uma validação, garantindo que a idade não seja negativa.
Por que utilizar getters e setters em PHP?
O uso de getters e setters é essencial para garantir a segurança dos dados dentro de uma classe. Eles evitam acessos diretos às propriedades e permitem validações antes de modificar qualquer valor, garantindo que o código siga regras definidas.
Algumas aplicações:
- Proteção de dados sensíveis dentro de uma classe
- Garantia de que valores inválidos não sejam atribuídos
- Criação de APIs mais seguras e organizadas
- Facilidade de manutenção e testes em aplicações PHP
Dicas para quem está começando
- Utilize
private
para proteger atributos e use getters/setters para acessá-los. - Adicione validações dentro dos setters para evitar valores incorretos.
- Evite criar getters e setters desnecessários se o acesso direto for aceitável.
- Pense na lógica do negócio antes de definir quais atributos precisam ser protegidos.
- Experimente combinar getters e setters com métodos mágicos para automatizar acessos.
Contribuições de Daniel Moreira