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

首頁 > 網站 > 建站經驗 > 正文

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

2024-04-25 20:31:28
字體:
來源:轉載
供稿:網友

PHP的反射類ReflectionClass、ReflectionMethod使用實例,本文同時介紹了反射是什么、反射可以做哪些事情,并給出一個具體例子,是一篇不錯的入門文章,需要的朋友可以參考下
PHP5 具有完整的反射API,添加對類、接口、函數、方法和擴展進行反向工程的能力。

反射是什么?

它是指在PHP運行狀態中,擴展分析PHP程序,導出或提取出關于類、方法、屬性、參數等的詳細信息,包括注釋。這種動態獲取的信息以及動態調用對象的方法的功能稱為反射API。反射是操縱面向對象范型中元模型的API,其功能十分強大,可幫助我們構建復雜,可擴展的應用。

其用途如:自動加載插件,自動生成文檔,甚至可用來擴充PHP語言。

PHP反射api由若干類組成,可幫助我們用來訪問程序的元數據或者同相關的注釋交互。借助反射我們可以獲取諸如類實現了那些方法,創建一個類的實例(不同于用new創建),調用一個方法(也不同于常規調用),傳遞參數,動態調用類的靜態方法。
反射api是PHP內建的OOP技術擴展,包括一些類,異常和接口,綜合使用他們可用來幫助我們分析其它類,接口,方法,屬性,方法和擴展。這些OOP擴展被稱為反射。

平常我們用的比較多的是 ReflectionClass類 和 ReflectionMethod類,例如:PHP的反射類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->id;

}
  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的注釋。PHP的反射類ReflectionClass、ReflectionMethod使用實例

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類的某個方法的信息:PHP的反射類ReflectionClass、ReflectionMethod使用實例

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(); // 參數對象數組
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美一区二区在线| 高清日韩电视剧大全免费播放在线观看| 国产欧美一区二区三区在线| 久久躁狠狠躁夜夜爽| 国产欧美在线视频| 亚洲伊人久久大香线蕉av| 亚洲视频国产视频| 国产精品亚洲自拍| 国产精品揄拍一区二区| 欧美极品少妇全裸体| www欧美xxxx| 久久91超碰青草是什么| 韩国三级日本三级少妇99| 久久人人97超碰精品888| 国产丝袜高跟一区| 国产精品草莓在线免费观看| 久久视频中文字幕| 亚洲免费成人av电影| 欧美激情中文字幕在线| 亚洲国产又黄又爽女人高潮的| 国产成人欧美在线观看| 性欧美视频videos6一9| 日韩成人高清在线| 国产香蕉一区二区三区在线视频| 国产精品老女人视频| **欧美日韩vr在线| 亚洲久久久久久久久久久| 国产欧美亚洲精品| 欧美精品在线免费播放| 国产日韩在线亚洲字幕中文| 精品中文字幕在线| 国产精品一久久香蕉国产线看观看| 中文字幕欧美视频在线| 精品香蕉在线观看视频一| 亚洲欧美中文在线视频| 亚洲无亚洲人成网站77777| 欧美日韩性视频| 日韩欧美在线视频| 欧美性黄网官网| 日韩精品福利在线| 欧美亚洲视频在线看网址| 日韩黄色av网站| 国产精品久久久久久久久粉嫩av| 欧美一区二区三区……| 91免费精品国偷自产在线| 日韩av日韩在线观看| 欧美中文字幕在线播放| 亚洲国产精久久久久久| 欧美另类交人妖| 韩国欧美亚洲国产| 成人a免费视频| 国产亚洲在线播放| 国产精品丝袜高跟| 日韩电影中文字幕在线观看| 亚洲电影免费观看高清完整版| 日韩女优在线播放| 亚洲一区二区三区成人在线视频精品| 亚洲综合av影视| 欧美与黑人午夜性猛交久久久| 国产成人精品在线| 日韩在线观看av| 成人做爽爽免费视频| 日韩精品久久久久久久玫瑰园| 精品久久久久久亚洲国产300| 久久亚洲精品一区二区| 欧美插天视频在线播放| 国产精品香蕉在线观看| 91在线观看免费| 不卡伊人av在线播放| 精品偷拍一区二区三区在线看| 91最新在线免费观看| 亚洲欧美变态国产另类| 亚洲热线99精品视频| www.午夜精品| 91精品国产91久久久久福利| 国产欧美在线看| 欧美成人免费播放| 欧美制服第一页| 久久精品亚洲精品| 国产精品久久久久久超碰| 欧美性受xxxx黑人猛交| 国产欧美日韩精品在线观看| 亚洲色图50p| 亚洲人成电影网站色xx| 亚洲精品720p| 亚洲欧美成人在线| 国内精品久久久久伊人av| 亚洲第一网站免费视频| 国产精品入口福利| 亚洲精品久久久久久下一站| 4444欧美成人kkkk| 中文字幕亚洲综合久久筱田步美| 成人免费观看网址| 成人福利视频在线观看| 欧美激情喷水视频| 91精品视频专区| 国产福利视频一区二区| 国产精品国模在线| 色妞色视频一区二区三区四区| 日韩美女福利视频| 亚洲影院色无极综合| 国产精品av网站| 国产网站欧美日韩免费精品在线观看| 92看片淫黄大片看国产片| 一区二区三区无码高清视频| 久久伊人免费视频| 91沈先生作品| 亚洲理论电影网| 色yeye香蕉凹凸一区二区av| 久久国产加勒比精品无码| 777777777亚洲妇女| 91免费的视频在线播放| 日韩一中文字幕| 国产精品爽黄69天堂a| 日韩不卡中文字幕| 久久精品国产亚洲精品2020| 中文字幕成人精品久久不卡| 亚洲欧美日韩国产精品| 亚洲一区二区三区四区视频| 国产亚洲精品久久| 精品久久久久久中文字幕大豆网| 欧美激情伊人电影| 久久不射热爱视频精品| 51视频国产精品一区二区| 不卡伊人av在线播放| 国产精品电影网站| 精品国产91久久久久久老师| 久久综合伊人77777蜜臀| 91精品国产高清| 日韩精品久久久久久久玫瑰园| 国产精品视频色| 国产精品入口日韩视频大尺度| 亚洲男人第一av网站| 久久视频在线观看免费| 国产精品视频网址| 欧美在线视频一区二区| 91tv亚洲精品香蕉国产一区7ujn| 久久夜色精品国产| 亚洲网站在线观看| 日韩av一卡二卡| 91av中文字幕| 国产精品电影在线观看| 欧美日韩美女视频| 日韩久久免费视频| 久久手机精品视频| 97欧美精品一区二区三区| 丰满岳妇乱一区二区三区| 久久免费在线观看| 欧美成人免费观看| 日韩免费观看高清| 亚洲黄色av女优在线观看| 亚洲一区二区三区乱码aⅴ| 国模私拍视频一区| 日韩av理论片| 久久久久久网站| 成人免费网站在线| 久久精品中文字幕一区| 欧美性色xo影院| 91精品国产自产在线| 日韩中文av在线| 国产欧美一区二区三区四区| 北条麻妃久久精品| 久久久久久999| 一本色道久久综合狠狠躁篇的优点|