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
public 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
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:
Attempting to unset 'a'
Attempting to unset 'c'
Beispiel
Verwendung von __unset zur Zugriffskontrolle auf private Eigenschaften:
<?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:
Exception: Cannot unset private property 'email'