PHP中__unset()方法詳解

2020-07-16 10:05:40
__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()方法詳解的詳細內容,更多請關注TW511.COM其它相關文章!