Método __unset
O método __unset é um dos métodos mágicos em PHP. Ele é chamado automaticamente quando se tenta excluir uma propriedade inexistente ou inacessível de um objeto usando a função unset. O método recebe um parâmetro - o nome da propriedade que está sendo tentada excluir.
Sintaxe
public function __unset(string $name): void
Exemplo
Vamos criar uma classe com o método mágico __unset e tentar excluir uma propriedade inexistente:
<?php
class MyClass {
private $data = ['a' => 1, 'b' => 2];
public function __unset($name) {
echo "Tentando excluir '$name'\n";
unset($this->data[$name]);
}
}
$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>
Resultado da execução do código:
Tentando excluir 'a'
Tentando excluir 'c'
Exemplo
Usando __unset para controlar o acesso a propriedades privadas:
<?php
class User {
private $email = 'user@example.com';
public function __unset($name) {
if ($name === 'email') {
throw new Exception("Não é possível excluir a propriedade privada 'email'");
}
}
}
$user = new User();
unset($user->email);
?>
Resultado da execução do código:
Exception: Não é possível excluir a propriedade privada 'email'