一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP反射類ReflectionClass和ReflectionObject的使用方法

PHP反射類ReflectionClass和ReflectionObject的使用方法

2020-05-29 14:53PHP教程網 PHP教程

PHP反射類ReflectionClass和ReflectionObject,該擴展用來分析php程序,導出或提取出關于類、方法、屬性、參數等的詳細信息,包括注釋。

PHP中的擴展反射類,該擴展用來分析php程序,導出或提取出關于類、方法、屬性、參數等的詳細信息,包括注釋。
看一個這樣的問題,php類的成員變量沒有在類中聲明,而是在函數中聲明,有什么不同?

復制代碼 代碼如下:


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

$test=new test();

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

echo $test->aaa;//打印結果:aaa


在這個test類中,聲明了兩個成員變量$name和$sex,但是在構造函數中,又聲明了一個變量$aaa,初始化類,使用反射類打印默認成員屬性只有聲明的兩個成員變量屬性,但是打印類的$aaa變量發現還是可以輸出結果。
請問類的成員變量不用聲明,在函數中聲明也是可以的嗎,有什么區別?
在你這個例子中,使用ReflectionClass是不恰當的,因為__construct只有在實例化class時,才會執行。
也就是說ReflectionClass更多的是反射類聲明時的結構,而不是類實例化后的結構,所以沒有輸出屬性aaa是正確,因為屬性aaa確實是(在類聲明時)不存在的。
那么怎么看屬性aaa呢,應該用ReflectionObject反射實例化后的結構,例如

復制代碼 代碼如下:


<?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);


經過實例化以后,屬性aaa才會存在,這時你就能看到屬性aaa了
因為php是“動態”語言,所以可以類的成員變量不用聲明,在函數中聲明也是可以的。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲自愉自愉 | 爸爸的宝贝小说全文在线阅读 | 国产午夜精品一区二区 | 美女扒下内裤让男人桶的图片 | 亚洲国产精品久久人人爱 | 欧美一区二区三区免费高 | 19+韩国女主播激情vip视频在线 | 羞羞答答免费人成黄页在线观看国产 | 人与动videos | 亚洲精品乱码蜜桃久久久 | 精品久久免费观看 | 国产毛片在线观看 | 国产91精选学生在线观看 | 91在线亚洲精品一区 | tobu8中国在线播放免费 | 午夜香蕉成视频人网站高清版 | 久9青青cao精品视频在线 | 午夜亚洲 | 国产成人愉拍精品 | 国产91青青成人a在线 | 色先锋影音先锋 | 啊哈~嗯哼~用力cao我小说 | 亚欧精品在线观看 | 国产高清在线播放刘婷91 | 亚洲日韩欧美一区二区在线 | 97porm国内自拍视频 | 92国产福利久久青青草原 | 91精品国产高清久久久久久io | 亚洲国产成人综合 | 国产三及 | 婷射吧 | 黄a在线观看 | 国产成人 免费观看 | 天堂成人在线观看 | 男人躁女人过程 | 精品牛牛影视久久精品 | 三级小说网站 | 国产在线观看一区 | 久久人妻少妇嫩草AV无码 | 成人福利在线视频免费观看 | 四虎精品在线观看 |