Kaedah __unset

Kaedah __unset adalah salah satu kaedah ajaib dalam PHP. Ia dipanggil secara automatik apabila cuba memadam sifat objek yang tidak wujud atau tidak boleh diakses menggunakan fungsi unset. Kaedah ini menerima satu parameter - nama sifat yang cuba dipadam.

Sintaks

phppublic function __unset(string $name): void

Contoh

Mari buat kelas dengan kaedah ajaib __unset dan cuba padam sifat yang tidak wujud:

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);
?>

Keputusan pelaksanaan kod:

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

Contoh

Menggunakan __unset untuk mengawal akses kepada sifat peribadi:

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);
?>

Keputusan pelaksanaan kod:

phpException: Cannot unset private property 'email'

Lihat juga

  • kaedah __set,
    yang dipanggil apabila menulis kepada sifat yang tidak boleh diakses
  • kaedah __get,
    yang dipanggil apabila membaca sifat yang tidak boleh diakses
  • kaedah __isset,
    yang dipanggil apabila menyemak kewujudan sifat yang tidak boleh diakses