Metodas __unset

Metodas __unset yra vienas iš magiškų metodų PHP. Jis automatiškai iškviečiamas, kai bandoma pašalinti neegzistuojančią arba neprieinamą objekto savybę naudojant funkciją unset. Metodas priima vieną parametrą - savybės pavadinimą, kurį bando pašalinti.

Sintaksė

phppublic function __unset(string $name): void

Pavyzdys

Sukurkime klasę su magišku metodu __unset ir pabandykime pašalinti neegzistuojančią savybę:

php<?php
class MyClass {
  private $data = ['a' => 1, 'b' => 2];
  
  public function __unset($name) {
    echo "Bandoma pašalinti '$name'\n";
    unset($this->data[$name]);
  }
}

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

Kodo vykdymo rezultatas:

phpBandoma pašalinti 'a'
Bandoma pašalinti 'c'

Pavyzdys

__unset naudojimas prieigos prie privačių savybių kontrolė:

php<?php
class User {
  private $email = 'user@example.com';
  
  public function __unset($name) {
    if ($name === 'email') {
      throw new Exception("Negalima pašalinti privacios savybės 'email'");
    }
  }
}

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

Kodo vykdymo rezultatas:

phpException: Negalima pašalinti privacios savybės 'email'

Taip pat žiūrėkite

  • metodas __set,
    kuris iškviečiamas rašant į neprieinamą savybę
  • metodas __get,
    kuris iškviečiamas skaitant neprieinamą savybę
  • metodas __isset,
    kuris iškviečiamas tikrinant neprieinamos savybės egzistavimą