Metode __unset

Metode __unset ir viena no maģiskajām metodēm PHP. Tā tiek automātiski izsaukta, kad mēģina dzēst neesošu vai nepieejamu objekta īpašību, izmantojot funkciju unset. Metode pieņem vienu parametru - nosaukumu īpašībai, kuru mēģina dzēst.

Sintakse

phppublic function __unset(string $name): void

Piemērs

Izveidosim klasi ar maģisko metodi __unset un mēģināsim dzēst neesošu īpašību:

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

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

Koda izpildes rezultāts:

phpMēģina dzēst 'a'
Mēģina dzēst 'c'

Piemērs

__unset izmantošana piekļuves kontrolei privātajām īpašībām:

php<?php
class User {
  private $email = 'user@example.com';
  
  public function __unset($name) {
    if ($name === 'email') {
      throw new Exception("Nevar dzēst privāto īpašību 'email'");
    }
  }
}

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

Koda izpildes rezultāts:

phpException: Nevar dzēst privāto īpašību 'email'

Skatiet arī

  • metode __set,
    kas tiek izsaukta, rakstot nepieejamā īpašībā
  • metode __get,
    kas tiek izsaukta, lasot nepieejamu īpašību
  • metode __isset,
    kas tiek izsaukta, pārbaudot nepieejamas īpašības esamību