亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP的反射類ReflectionClass、ReflectionMethod使用實例

2020-03-22 19:02:48
字體:
來源:轉載
供稿:網友
PHP5 具有完整的反射API,添加對類、接口、函數、方法和擴展進行反向工程的能力。反射是什么?它是指在PHP運行狀態中,擴展分析PHP程序,導出或提取出關于類、方法、屬性、參數等的詳細信息,包括注釋。這種動態獲取的信息以及動態調用對象的方法的功能稱為反射API。反射是操縱html' target='_blank'>面向對象范型中元模型的API,其功能十分強大,可幫助我們構建復雜,可擴展的應用。其用途如:自動加載插件,自動生成文檔,甚至可用來擴充PHP語言。PHP反射api由若干類組成,可幫助我們用來訪問程序的元數據或者同相關的注釋交互。借助反射我們可以獲取諸如類實現了那些方法,創建一個類的實例(不同于用new創建),調用一個方法(也不同于常規調用),傳遞參數,動態調用類的靜態方法。
反射api是PHP內建的OOP技術擴展,包括一些類,異常和接口,綜合使用他們可用來幫助我們分析其它類,接口,方法,屬性,方法和擴展。這些OOP擴展被稱為反射。平常我們用的比較多的是 ReflectionClass類 和 ReflectionMethod類,例如:
復制代碼 代碼如下:
php
class Person {/**
* For the sake of demonstration, we"re setting this private
*/
private $_allowDynamicAttributes = false;/**
* type=primary_autoincrement
*/
protected $id = 0;/**
* type=varchar length=255 null
*/
protected $name;/**
* type=text null
*/
protected $biography;public function getId() {
return $this-
}public function setId($v) {
$this- id = $v;
}public function getName() {
return $this- name;
}public function setName($v) {
$this- name = $v;
}public function getBiography() {
return $this- biography;
}public function setBiography($v) {
$this- biography = $v;
}
}
一、通過ReflectionClass,我們可以得到Person類的以下信息:1.常量 Contants
2.屬性 Property Names
3.方法 Method Names靜態
4.屬性 Static Properties
5.命名空間 Namespace
6.Person類是否為final或者abstract
7.Person類是否有某個方法接下來反射它,只要把類名"Person"傳遞給ReflectionClass就可以了:
復制代碼 代碼如下:
$class = new ReflectionClass('Person'); // 建立 Person這個類的反射類
$instance = $class- newInstanceArgs($args); // 相當于實例化Person 類
1)獲取屬性(Properties):復制代碼 代碼如下:
$properties = $class- getProperties();
foreach ($properties as $property) {
echo $property- getName() . "/n";
}
// 輸出:
// _allowDynamicAttributes
// id
// name
// biography
默認情況下,ReflectionClass會獲取到所有的屬性,private 和 protected的也可以。如果只想獲取到private屬性,就要額外傳個參數:復制代碼 代碼如下:
$private_properties = $class- getProperties(ReflectionProperty::IS_PRIVATE);
可用參數列表:復制代碼 代碼如下:
ReflectionProperty::IS_STATIC
ReflectionProperty::IS_PUBLIC
ReflectionProperty::IS_PROTECTED
ReflectionProperty::IS_PRIVATE
通過$property- getName()可以得到屬性名。2)獲取注釋:通過getDocComment可以得到寫給property的注釋。復制代碼 代碼如下:
foreach ($properties as $property) {
if ($property- isProtected()) {
$docblock = $property- getDocComment();
preg_match('/ type/=([a-z_]*) /', $property- getDocComment(), $matches);
echo $matches[1] . "/n";
}
}
// Output:
// primary_autoincrement
// varchar
// text
3)獲取類的方法復制代碼 代碼如下:
getMethods() 來獲取到類的所有methods。
hasMethod(string) 是否存在某個方法
getMethod(string) 獲取方法
4)執行類的方法:
復制代碼 代碼如下:
$instance- getName(); // 執行Person 里的方法getName
// 或者:
$method = $class- getmethod('getName');// 獲取Person 類中的getName方法
$method- invoke($instance);// 執行getName 方法
// 或者:
$method = $class- getmethod('setName');// 獲取Person 類中的setName方法
$method- invokeArgs($instance, array('snsgou.com'));
二、通過ReflectionMethod,我們可以得到Person類的某個方法的信息:1.是否“public”、“protected”、“private” 、“static”類型
2.方法的參數列表
3.方法的參數個數
4.反調用類的方法
復制代碼 代碼如下:
// 執行detail方法
$method = new ReflectionMethod('Person', 'test');if ($method- isPublic() && !$method- isStatic()) {
echo 'Action is right';
}
echo $method- getNumberOfParameters(); // 參數個數
echo $method- getParameters(); // 參數對象數組
PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
26uuu国产精品视频| 国内精品视频一区| 欧美日韩成人网| 久久人人爽人人爽人人片亚洲| 性金发美女69hd大尺寸| 久久国产精品网站| 国产欧亚日韩视频| 久久夜色撩人精品| 久久精品国产精品亚洲| 亚洲视频国产视频| 亚洲女在线观看| 欧美视频不卡中文| 欧美成aaa人片在线观看蜜臀| 日韩专区在线观看| 日韩欧美在线视频| 裸体女人亚洲精品一区| 日韩av大片免费看| 欧美精品videos另类日本| 久久夜色精品国产亚洲aⅴ| 青草热久免费精品视频| 欧美电影在线观看网站| 国产精品99一区| 国产精品电影久久久久电影网| 欧美午夜片在线免费观看| 欧美一区二区三区免费视| 国产在线98福利播放视频| 高清欧美性猛交xxxx黑人猛交| 欧美亚洲另类激情另类| 国产欧美日韩视频| 国产男人精品视频| 亚洲国产黄色片| 欧美性猛交xxxx免费看久久久| 久久久www成人免费精品张筱雨| 国产日韩在线看| 欧美亚洲一区在线| 日韩视频精品在线| 国产精品久久久久久久久借妻| 亚洲一区中文字幕| 国产精品久久久久久超碰| 国产一区av在线| 欧美日韩国产成人高清视频| 57pao国产成人免费| 国产91热爆ts人妖在线| 日韩激情视频在线播放| 亚洲free嫩bbb| 亚洲女同精品视频| 久久久国产精品视频| 欧美一级电影免费在线观看| 91社影院在线观看| 亚洲毛片在线观看| 日本19禁啪啪免费观看www| 另类视频在线观看| 黑人巨大精品欧美一区二区免费| 亚洲成成品网站| 琪琪亚洲精品午夜在线| 亚洲男人第一av网站| 欧美色道久久88综合亚洲精品| 欧美中文在线字幕| 亚洲影院色在线观看免费| 在线中文字幕日韩| 亚洲人成网在线播放| 久久久久久久亚洲精品| 国产欧亚日韩视频| 日韩黄在线观看| 疯狂欧美牲乱大交777| 色老头一区二区三区在线观看| 欧美一区二区三区四区在线| 亚洲香蕉在线观看| 国产一区二区三区在线看| 日本一本a高清免费不卡| 色偷偷偷亚洲综合网另类| 亚洲一区二区三区四区视频| 欧美片一区二区三区| 色先锋资源久久综合5566| 国产精品一区二区性色av| 国产香蕉一区二区三区在线视频| 久久久久久国产三级电影| 91禁国产网站| 亚洲偷熟乱区亚洲香蕉av| 66m—66摸成人免费视频| 精品国产一区av| 国产精品日韩在线一区| 欧美男插女视频| 2019中文在线观看| 亚洲精品98久久久久久中文字幕| 成人免费在线视频网址| 亚洲全黄一级网站| 国产精品99久久久久久人| 日本韩国欧美精品大片卡二| 伊人亚洲福利一区二区三区| 国产亚洲日本欧美韩国| 国模吧一区二区| 日韩小视频在线观看| 57pao国产精品一区| 国产精品精品一区二区三区午夜版| 亚洲图片欧洲图片av| 成人福利免费观看| 中文字幕日韩av| 久久久久久美女| 黑丝美女久久久| 欧美日韩高清区| 日韩激情在线视频| 尤物99国产成人精品视频| 中文字幕日韩欧美在线视频| 亚洲欧美激情四射在线日| 久久精品人人做人人爽| 久久久久免费视频| 亚洲美女视频网| 日韩欧美精品中文字幕| 国产精品视频在线观看| 国产偷亚洲偷欧美偷精品| 欧美日韩成人在线播放| 亚洲精品美女在线观看播放| 97视频在线观看免费| 日韩激情av在线免费观看| 91亚洲人电影| 黄色一区二区在线观看| 成人疯狂猛交xxx| 国产精品jvid在线观看蜜臀| 久久久爽爽爽美女图片| 91网在线免费观看| 国产精品久久久久91| 日韩在线观看免费高清完整版| 日韩av电影院| 欧美一性一乱一交一视频| 亚洲无亚洲人成网站77777| 国产精品久久久久久久久久久新郎| 日韩黄在线观看| 亚洲自拍偷拍色片视频| 国产一区二区精品丝袜| 日韩美女在线播放| 欧美午夜片欧美片在线观看| 国产精品网址在线| 欧美风情在线观看| 欧美天天综合色影久久精品| 北条麻妃一区二区三区中文字幕| 国产www精品| 亚洲国产精品视频在线观看| 88xx成人精品| 精品性高朝久久久久久久| 亚洲二区在线播放视频| 亚洲国产精品99久久| www.久久久久久.com| 成人精品视频99在线观看免费| 91超碰caoporn97人人| 在线播放国产一区中文字幕剧情欧美| 日韩av影视综合网| 在线看欧美日韩| 成人激情视频在线播放| 国产精品女视频| 久久亚洲精品一区二区| 亚洲精品资源美女情侣酒店| 久久精品国产久精国产思思| 久久综合国产精品台湾中文娱乐网| 国产美女精品免费电影| 57pao成人国产永久免费| 国自产精品手机在线观看视频| 国产精品揄拍一区二区| 一二美女精品欧洲| 国产日韩精品在线观看| 欧美剧在线观看| 欧美天天综合色影久久精品| 亚洲综合社区网| 亚洲国产97在线精品一区|