溫馨提示×

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

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

PHP反射類(lèi)ReflectionClass和ReflectionObject的用法

發(fā)布時(shí)間:2021-07-24 14:03:32 來(lái)源:億速云 閱讀:151 作者:chen 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“PHP反射類(lèi)ReflectionClass和ReflectionObject的用法”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“PHP反射類(lèi)ReflectionClass和ReflectionObject的用法”吧!

PHP中的擴(kuò)展反射類(lèi),該擴(kuò)展用來(lái)分析php程序,導(dǎo)出或提取出關(guān)于類(lèi)、方法、屬性、參數(shù)等的詳細(xì)信息,包括注釋。
看一個(gè)這樣的問(wèn)題,php類(lèi)的成員變量沒(méi)有在類(lèi)中聲明,而是在函數(shù)中聲明,有什么不同?

復(fù)制代碼 代碼如下:


class test{
    private $name;
    private $sex;
    function __construct(){
        $this->aaa='aaa';
    }
}

$test=new test();

$reflect=new ReflectionClass($test);
$pro=$reflect->getDefaultProperties();
print_r($pro);//打印結(jié)果:Array ( [name] => [sex] => )

echo $test->aaa;//打印結(jié)果:aaa


在這個(gè)test類(lèi)中,聲明了兩個(gè)成員變量$name和$sex,但是在構(gòu)造函數(shù)中,又聲明了一個(gè)變量$aaa,初始化類(lèi),使用反射類(lèi)打印默認(rèn)成員屬性只有聲明的兩個(gè)成員變量屬性,但是打印類(lèi)的$aaa變量發(fā)現(xiàn)還是可以輸出結(jié)果。
請(qǐng)問(wèn)類(lèi)的成員變量不用聲明,在函數(shù)中聲明也是可以的嗎,有什么區(qū)別?
在你這個(gè)例子中,使用ReflectionClass是不恰當(dāng)?shù)模驗(yàn)開(kāi)_construct只有在實(shí)例化class時(shí),才會(huì)執(zhí)行。
也就是說(shuō)ReflectionClass更多的是反射類(lèi)聲明時(shí)的結(jié)構(gòu),而不是類(lèi)實(shí)例化后的結(jié)構(gòu),所以沒(méi)有輸出屬性aaa是正確,因?yàn)閷傩詀aa確實(shí)是(在類(lèi)聲明時(shí))不存在的。
那么怎么看屬性aaa呢,應(yīng)該用ReflectionObject反射實(shí)例化后的結(jié)構(gòu),例如

復(fù)制代碼 代碼如下:


<?php
class test{
    private $name;
    private $sex;
    function __construct(){
        $this->aaa='aaa';
    }
}
$test=new test();

$reflect=new ReflectionObject($test);
$pro=$reflect->getProperties();
print_r($pro);
 


經(jīng)過(guò)實(shí)例化以后,屬性aaa才會(huì)存在,這時(shí)你就能看到屬性aaa了
因?yàn)閜hp是“動(dòng)態(tài)”語(yǔ)言,所以可以類(lèi)的成員變量不用聲明,在函數(shù)中聲明也是可以的。

感謝各位的閱讀,以上就是“PHP反射類(lèi)ReflectionClass和ReflectionObject的用法”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)PHP反射類(lèi)ReflectionClass和ReflectionObject的用法這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

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

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

AI