溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中__isset()方法有什么用

發(fā)布時間:2020-10-24 15:46:55 來源:億速云 閱讀:163 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)PHP中__isset()方法有什么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

 __isset(),當(dāng)對不可訪問屬性調(diào)用isset()或empty()時調(diào)用

在看這個方法之前我們看一下isset()函數(shù)的應(yīng)用,isset()是測定變量是否設(shè)定用的函數(shù),傳入一個變量作為參數(shù),如果傳入的變量存在則傳回true,否則傳回false。

那么如果在一個對象外面使用isset()這個函數(shù)去測定對象里面的成員是否被設(shè)定可不可以用它呢?

分兩種情況,如果對象里面成員是公有的,我們就可以使用這個函數(shù)來測定成員屬性,如果是私有的成員屬性,這個函數(shù)就不起作用了,原因就是因為私有的被封裝了,在外部不可見。那么我們就不可以在對象的外部使用isset()函數(shù)來測定私有成員屬性是否被設(shè)定了呢?當(dāng)然是可以的,但不是一成不變。

你只要在類里面加上一個__isset()方法就可以了,當(dāng)在類外部使用isset()函數(shù)來測定對象里面的私有成員是否被設(shè)定時,就會自動調(diào)用類里面的__isset()方法了幫我們完成這樣的操作。

__isset()的作用:

當(dāng)對不可訪問屬性調(diào)用 isset() 或 empty() 時,__isset() 會被調(diào)用。

請看下面代碼演示:

<?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 __isset($content) {
        echo "當(dāng)在類外部使用isset()函數(shù)測定私有成員{$content}時,自動調(diào)用<br>";
        echo  isset($this->$content);
    }
}
$person = new Person("小明", 25); // 初始賦值
echo isset($person->sex),"<br>";
echo isset($person->name),"<br>";
echo isset($person->age),"<br>";

運行結(jié)果如下:

1 // public 可以 isset()
當(dāng)在類外部使用isset()函數(shù)測定私有成員name時,自動調(diào)用 // __isset() 內(nèi) 第一個echo
1 // __isset() 內(nèi)第二個echo
當(dāng)在類外部使用isset()函數(shù)測定私有成員age時,自動調(diào)用 // __isset() 內(nèi) 第一個echo
1 // __isset() 內(nèi)第二個echo

感謝各位的閱讀!關(guān)于PHP中__isset()方法有什么用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI