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

phppublic function __unset(string $name): void

Exemplo

Vamos criar uma classe com o método mágico __unset e tentar excluir uma propriedade inexistente:

php<?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:

phpTentando excluir 'a'
Tentando excluir 'c'

Exemplo

Usando __unset para controlar o acesso a propriedades privadas:

php<?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:

phpException: Não é possível excluir a propriedade privada 'email'

Veja também

  • método __set,
    que é chamado ao escrever em uma propriedade inacessível
  • método __get,
    que é chamado ao ler uma propriedade inacessível
  • método __isset,
    que é chamado ao verificar a existência de uma propriedade inacessível