Methode __unset

Die Methode __unset ist eine der magischen Methoden in PHP. Sie wird automatisch aufgerufen, wenn versucht wird, eine nicht vorhandene oder nicht zugängliche Eigenschaft eines Objekts mit der Funktion unset zu löschen. Die Methode akzeptiert einen Parameter - den Namen der Eigenschaft, die gelöscht werden soll.

Syntax

phppublic function __unset(string $name): void

Beispiel

Erstellen wir eine Klasse mit der magischen Methode __unset und versuchen, eine nicht vorhandene Eigenschaft zu löschen:

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

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

Ergebnis der Codeausführung:

phpAttempting to unset 'a'
Attempting to unset 'c'

Beispiel

Verwendung von __unset zur Zugriffskontrolle auf private Eigenschaften:

php<?php
class User {
  private $email = 'user@example.com';
  
  public function __unset($name) {
    if ($name === 'email') {
      throw new Exception("Cannot unset private property 'email'");
    }
  }
}

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

Ergebnis der Codeausführung:

phpException: Cannot unset private property 'email'

Siehe auch

  • Methode __set,
    die beim Schreiben in eine nicht zugängliche Eigenschaft aufgerufen wird
  • Methode __get,
    die beim Lesen einer nicht zugänglichen Eigenschaft aufgerufen wird
  • Methode __isset,
    die beim Prüfen der Existenz einer nicht zugänglichen Eigenschaft aufgerufen wird