Metóda __unset

Metóda __unset je jednou z magických metód v PHP. Automaticky sa volá, keď sa pokúšajú odstrániť neexistujúcu alebo nedostupnú vlastnosť objektu pomocou funkcie unset. Metóda prijíma jeden parameter - názov vlastnosti, ktorú sa pokúšajú odstrániť.

Syntax

phppublic function __unset(string $name): void

Príklad

Vytvorme triedu s magickou metódou __unset a skúsme odstrániť neexistujúcu vlastnosť:

php<?php
class MyClass {
  private $data = ['a' => 1, 'b' => 2];
  
  public function __unset($name) {
    echo "Pokus o odstránenie '$name'\n";
    unset($this->data[$name]);
  }
}

$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>

Výsledok vykonania kódu:

phpPokus o odstránenie 'a'
Pokus o odstránenie 'c'

Príklad

Použitie __unset na kontrolu prístupu k privátnym vlastnostiam:

php<?php
class User {
  private $email = 'user@example.com';
  
  public function __unset($name) {
    if ($name === 'email') {
      throw new Exception("Nie je možné odstrániť privátnu vlastnosť 'email'");
    }
  }
}

$user = new User();
unset($user->email);
?>

Výsledok vykonania kódu:

phpException: Nie je možné odstrániť privátnu vlastnosť 'email'

Pozri tiež

  • metóda __set,
    ktorá je volaná pri zápise do nedostupnej vlastnosti
  • metóda __get,
    ktorá je volaná pri čítaní nedostupnej vlastnosti
  • metóda __isset,
    ktorá je volaná pri kontrole existencie nedostupnej vlastnosti