看這個方法之前呢,我們也先來看一下 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()方法詳解的詳細內容,更多請關注TW511.COM其它相關文章!