__unset(),當對不可存取屬性呼叫unset()時被呼叫。
看這個方法之前呢,我們也先來看一下 unset() 函數,unset()這個函數的作用是刪除指定的變數且傳回true,參數為要刪除的變數。
那麼如果在一個物件外部去刪除物件內部的成員屬性用unset()函數可以嗎?
這裡自然也是分兩種情況:
1、 如果一個物件裡面的成員屬性是公有的,就可以使用這個函數在物件外面刪除物件的公有屬性。
2、 如果物件的成員屬性是私有的,我使用這個函數就沒有權限去刪除。
雖然有以上兩種情況,但我想說的是同樣如果你在一個物件裡面加上__unset()這個方法,就可以在物件的外部去刪除物件的私有成員屬性了。在物件裡面加上了__unset()這個方法之後,在物件外部使用「unset()」函數刪除物件內部的私有成員屬性時,物件會自動呼叫__unset()函數來幫我們刪除物件內部的私有成員屬性。
請看如下程式碼:
<?php class Person { public $sex; private $name; private $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } /** * @param $content * * @return bool */ public function __unset($content) { echo "当在类外部使用unset()函数来删除私有成员时自动调用的<br>"; echo isset($this->$content); } } $person = new Person("小明", 25); // 初始赋值 unset($person->sex); unset($person->name); unset($person->age);
執行結果:
当在类外部使用unset()函数来删除私有成员时自动调用的 1当在类外部使用unset()函数来删除私有成员时自动调用的 1
以上是PHP中__unset()方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!