Metode __unset

Metode __unset adalah salah satu metode ajaib dalam PHP. Ini secara otomatis dipanggil ketika ada upaya untuk menghapus properti objek yang tidak ada atau tidak dapat diakses menggunakan fungsi unset. Metode ini menerima satu parameter - nama properti yang coba dihapus.

Sintaks

phppublic function __unset(string $name): void

Contoh

Mari buat kelas dengan metode ajaib __unset dan coba hapus properti yang tidak ada:

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

Hasil eksekusi kode:

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

Contoh

Penggunaan __unset untuk mengontrol akses ke properti privat:

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

Hasil eksekusi kode:

phpException: Cannot unset private property 'email'

Lihat Juga

  • metode __set,
    yang dipanggil saat menulis ke properti yang tidak dapat diakses
  • metode __get,
    yang dipanggil saat membaca properti yang tidak dapat diakses
  • metode __isset,
    yang dipanggil saat memeriksa keberadaan properti yang tidak dapat diakses