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

首頁 > 開發 > PHP > 正文

PHP Reflection API詳解

2024-05-04 23:35:02
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP Reflection API詳解,本文講解了Reflection類、ReflectionException類、ReflectionFunction類、ReflectionParameter類、ReflectionClass類、ReflectionMethod類等內容,需要的朋友可以參考下

PHP Reflection API是PHP5才有的新功能,它是用來導出或提取出關于類、方法、屬性、參數等的詳細信息,包括注釋。

PHP Reflection API有:

 

 
  1. class Reflection { } 
  2. interface Reflector { } 
  3. class ReflectionException extends Exception { } 
  4. class ReflectionFunction implements Reflector { } 
  5. class ReflectionParameter implements Reflector { } 
  6. class ReflectionMethod extends ReflectionFunction { } 
  7. class ReflectionClass implements Reflector { } 
  8. class ReflectionObject extends ReflectionClass { } 
  9. class ReflectionProperty implements Reflector { } 
  10. class ReflectionExtension implements Reflector { } 

具體API說明:

①Reflection類

 

 
  1. <?php 
  2. class Reflection 
  3. public static mixed export(Reflector r [,bool return]) 
  4. //導出一個類或方法的詳細信息 
  5. public static array getModifierNames(int modifiers) 
  6. //取得修飾符的名字 
  7. ?> 

②ReflectionException類

該類繼承標準類,沒特殊方法和屬性。

③ReflectionFunction類

 

 
  1. <?php 
  2. class ReflectionFunction implements Reflector 
  3. final private __clone() 
  4. public object __construct(string name) 
  5. public string __toString() 
  6. public static string export() 
  7. //導出該函數的詳細信息 
  8. public string getName() 
  9. //取得函數名 
  10. public bool isInternal() 
  11. //測試是否為系統內部函數 
  12. public bool isUserDefined() 
  13. //測試是否為用戶自定義函數 
  14. public string getFileName() 
  15. //取得文件名,包括路徑名 
  16. public int getStartLine() 
  17. //取得定義函數的起始行 
  18. public int getEndLine() 
  19. //取得定義函數的結束行 
  20. public string getDocComment() 
  21. //取得函數的注釋 
  22. public array getStaticVariables() 
  23. //取得靜態變量 
  24. public mixed invoke(mixed* args) 
  25. //調用該函數,通過參數列表傳參數 
  26. public mixed invokeArgs(array args) 
  27. //調用該函數,通過數組傳參數 
  28. public bool returnsReference() 
  29. //測試該函數是否返回引用 
  30. public ReflectionParameter[] getParameters() 
  31. //取得該方法所需的參數,返回值為對象數組 
  32. public int getNumberOfParameters() 
  33. //取得該方法所需的參數個數 
  34. public int getNumberOfRequiredParameters() 
  35. //取得該方法所需的參數個數 
  36. ?> 

④ReflectionParameter類:

 

 
  1. <?php 
  2. class ReflectionParameter implements Reflector 
  3. final private __clone() 
  4. public object __construct(string name) 
  5. public string __toString() 
  6. public static string export() 
  7. //導出該參數的詳細信息 
  8. public string getName() 
  9. //取得參數名 
  10. public bool isPassedByReference() 
  11. //測試該參數是否通過引用傳遞參數 
  12. public ReflectionClass getClass() 
  13. //若該參數為對象,返回該對象的類名 
  14. public bool isArray() 
  15. //測試該參數是否為數組類型 
  16. public bool allowsNull() 
  17. //測試該參數是否允許為空 
  18. public bool isOptional() 
  19. //測試該參數是否為可選的,當有默認參數時可選 
  20. public bool isDefaultValueAvailable() 
  21. //測試該參數是否為默認參數 
  22. public mixed getDefaultValue() 
  23. //取得該參數的默認值 
  24. ?> 

⑤ReflectionClass類:

 

 
  1. <?php 
  2. class ReflectionClass implements Reflector 
  3. final private __clone() 
  4. public object __construct(string name) 
  5. public string __toString() 
  6. public static string export() 
  7. //導出該類的詳細信息 
  8. public string getName() 
  9. //取得類名或接口名 
  10. public bool isInternal() 
  11. //測試該類是否為系統內部類 
  12. public bool isUserDefined() 
  13. //測試該類是否為用戶自定義類 
  14. public bool isInstantiable() 
  15. //測試該類是否被實例化過 
  16. public bool hasConstant(string name) 
  17. //測試該類是否有特定的常量 
  18. public bool hasMethod(string name) 
  19. //測試該類是否有特定的方法 
  20. public bool hasProperty(string name) 
  21. //測試該類是否有特定的屬性 
  22. public string getFileName() 
  23. //取得定義該類的文件名,包括路徑名 
  24. public int getStartLine() 
  25. //取得定義該類的開始行 
  26. public int getEndLine() 
  27. //取得定義該類的結束行 
  28. public string getDocComment() 
  29. //取得該類的注釋 
  30. public ReflectionMethod getConstructor() 
  31. //取得該類的構造函數信息 
  32. public ReflectionMethod getMethod(string name) 
  33. //取得該類的某個特定的方法信息 
  34. public ReflectionMethod[] getMethods() 
  35. //取得該類的所有的方法信息 
  36. public ReflectionProperty getProperty(string name) 
  37. //取得某個特定的屬性信息 
  38. public ReflectionProperty[] getProperties() 
  39. //取得該類的所有屬性信息 
  40. public array getConstants() 
  41. //取得該類所有常量信息 
  42. public mixed getConstant(string name) 
  43. //取得該類特定常量信息 
  44. public ReflectionClass[] getInterfaces() 
  45. //取得接口類信息 
  46. public bool isInterface() 
  47. //測試該類是否為接口 
  48. public bool isAbstract() 
  49. //測試該類是否為抽象類 
  50. public bool isFinal() 
  51. //測試該類是否聲明為final 
  52. public int getModifiers() 
  53. //取得該類的修飾符,返回值類型可能是個資源類型 
  54. //通過Reflection::getModifierNames($class->getModifiers())進一步讀取 
  55. public bool isInstance(stdclass object) 
  56. //測試傳入的對象是否為該類的一個實例 
  57. public stdclass newInstance(mixed* args) 
  58. //創建該類實例 
  59. public ReflectionClass getParentClass() 
  60. //取得父類 
  61. public bool isSubclassOf(ReflectionClass class
  62. //測試傳入的類是否為該類的父類 
  63. public array getStaticProperties() 
  64. //取得該類的所有靜態屬性 
  65. public mixed getStaticPropertyValue(string name [, mixed default]) 
  66. //取得該類的靜態屬性值,若private,則不可訪問 
  67. public void setStaticPropertyValue(string name, mixed value) 
  68. //設置該類的靜態屬性值,若private,則不可訪問,有悖封裝原則 
  69. public array getDefaultProperties() 
  70. //取得該類的屬性信息,不含靜態屬性 
  71. public bool isIterateable() 
  72. public bool implementsInterface(string name) 
  73. //測試是否實現了某個特定接口 
  74. public ReflectionExtension getExtension() 
  75. public string getExtensionName() 
  76. ?> 

⑥ReflectionMethod類:

 

 
  1. <?php 
  2. class ReflectionMethod extends ReflectionFunction 
  3. public __construct(mixed class, string name) 
  4. public string __toString() 
  5. public static string export() 
  6. //導出該方法的信息 
  7. public mixed invoke(stdclass object, mixed* args) 
  8. //調用該方法 
  9. public mixed invokeArgs(stdclass object, array args) 
  10. //調用該方法,傳多參數 
  11. public bool isFinal() 
  12. //測試該方法是否為final 
  13. public bool isAbstract() 
  14. //測試該方法是否為abstract 
  15. public bool isPublic() 
  16. //測試該方法是否為public 
  17. public bool isPrivate() 
  18. //測試該方法是否為private 
  19. public bool isProtected() 
  20. //測試該方法是否為protected 
  21. public bool isStatic() 
  22. //測試該方法是否為static 
  23. public bool isConstructor() 
  24. //測試該方法是否為構造函數 
  25. public bool isDestructor() 
  26. //測試該方法是否為析構函數 
  27. public int getModifiers() 
  28. //取得該方法的修飾符 
  29. public ReflectionClass getDeclaringClass() 
  30. //取得該方法所屬的類 
  31. // Inherited from ReflectionFunction 
  32. final private __clone() 
  33. public string getName() 
  34. public bool isInternal() 
  35. public bool isUserDefined() 
  36. public string getFileName() 
  37. public int getStartLine() 
  38. public int getEndLine() 
  39. public string getDocComment() 
  40. public array getStaticVariables() 
  41. public bool returnsReference() 
  42. public ReflectionParameter[] getParameters() 
  43. public int getNumberOfParameters() 
  44. public int getNumberOfRequiredParameters() 
  45. ?> 

⑦ReflectionProperty類:

 

 
  1. <?php 
  2. class ReflectionProperty implements Reflector 
  3. final private __clone() 
  4. public __construct(mixed class, string name) 
  5. public string __toString() 
  6. public static string export() 
  7. //導出該屬性的詳細信息 
  8. public string getName() 
  9. //取得該屬性名 
  10. public bool isPublic() 
  11. //測試該屬性名是否為public 
  12. public bool isPrivate() 
  13. //測試該屬性名是否為private 
  14. public bool isProtected() 
  15. //測試該屬性名是否為protected 
  16. public bool isStatic() 
  17. //測試該屬性名是否為static 
  18. public bool isDefault() 
  19. public int getModifiers() 
  20. //取得修飾符 
  21. public mixed getValue(stdclass object) 
  22. //取得該屬性值 
  23. public void setValue(stdclass object, mixed value) 
  24. //設置該屬性值 
  25. public ReflectionClass getDeclaringClass() 
  26. //取得定義該屬性的類 
  27. public string getDocComment() 
  28. //取得該屬性的注釋 
  29. ?> 

⑧ReflectionExtension類

 

 
  1. <?php 
  2. class ReflectionExtension implements Reflector { 
  3. final private __clone() 
  4. public __construct(string name) 
  5. public string __toString() 
  6. public static string export() 
  7. //導出該擴展的所有信息 
  8. public string getName() 
  9. //取得該擴展的名字 
  10. public string getVersion() 
  11. //取得該擴展的版本 
  12. public ReflectionFunction[] getFunctions() 
  13. //取得該擴展的所有函數 
  14. public array getConstants() 
  15. //取得該擴展的所有常量 
  16. public array getINIEntries() 
  17. //取得與該擴展相關的,在php.ini中的指令信息 
  18. public ReflectionClass[] getClasses() 
  19. public array getClassNames() 
  20.  
  21. ?>  

使用例子:

 

 
  1. <?php 
  2. class Person{ 
  3. private $_name
  4.  
  5. public $age
  6.  
  7. public function __construct(){ 
  8. $this->sex = "male"
  9.  
  10. public function action(){ 
  11. echo "來自http://www.49028c.com的測試"
  12.  
  13. $class = new ReflectionClass('Person'); 
  14. //獲取屬性 
  15. foreach($class->getProperties() as $property) { 
  16. echo $property->getName()."/n"
  17. //獲取方法 
  18. print_r($class->getMethods()); 
  19.  
  20. $p1 = new Person(); 
  21. $obj = new ReflectionObject($p1); 
  22.  
  23. //獲取對象和類的屬性 
  24. print_r($obj->getProperties()); 

很明顯上面代碼中對象和類獲取的屬性是不同的,這是因為對象進行了contruct實例化,因此多了sex屬性,PHP Reflection確實能夠獲取很多有用的信息。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲欧美日韩在线不卡| 国产亚洲精品91在线| 亚洲国产成人久久综合一区| 国产精品视频永久免费播放| 国产亚洲精品久久久久久| 91网站免费观看| 亚洲欧美福利视频| 国产精品麻豆va在线播放| 成人黄色免费在线观看| 久久色精品视频| 夜夜狂射影院欧美极品| 日韩av成人在线| 亚洲精品99久久久久中文字幕| 亚洲高清福利视频| 欧美日本黄视频| 久久亚洲精品一区| 91视频-88av| 国产亚洲欧美另类中文| 亚洲一区二区三区在线视频| 日韩在线中文视频| 成人免费激情视频| 国产精品自拍偷拍视频| 国产一区二区三区久久精品| 57pao精品| 精品国产老师黑色丝袜高跟鞋| 色综合91久久精品中文字幕| 欧美性猛xxx| 国产原创欧美精品| 中文精品99久久国产香蕉| 国产精品久久久久久久久久东京| 国产精品丝袜白浆摸在线| 综合av色偷偷网| 日韩视频中文字幕| 亚洲iv一区二区三区| 69久久夜色精品国产69乱青草| 91国自产精品中文字幕亚洲| 亚洲视频国产视频| 日韩风俗一区 二区| 精品久久久久久久久久久久久久| 亚洲国产欧美一区二区丝袜黑人| 尤物99国产成人精品视频| 国产盗摄xxxx视频xxx69| 欧美日韩裸体免费视频| 欧美激情成人在线视频| 自拍视频国产精品| 国产精品海角社区在线观看| 欧洲亚洲免费在线| 久久99国产精品自在自在app| 久久久国产视频91| 91精品视频播放| 日韩成人网免费视频| 日韩免费在线免费观看| 亚洲二区在线播放视频| 亚洲欧美在线免费观看| 久久99久久99精品中文字幕| 日韩高清电影免费观看完整版| 亚洲精品国产电影| 日韩中文字幕在线播放| 久久久久五月天| 久久国产精品免费视频| 91免费欧美精品| 成人h片在线播放免费网站| 国产999精品| 日韩电影大全免费观看2023年上| 亚洲在线免费视频| 日本sm极度另类视频| 久久久久久中文| 亚洲一区二区少妇| 亚洲欧美激情一区| 欧美与欧洲交xxxx免费观看| 中文字幕亚洲一区二区三区五十路| 午夜精品视频在线| 欧美午夜女人视频在线| 色综合五月天导航| 日韩最新免费不卡| 中文字幕亚洲欧美日韩高清| 日本一区二区在线播放| 亚洲va久久久噜噜噜| 92版电视剧仙鹤神针在线观看| 欧美性xxxx极品hd满灌| 亚洲高清免费观看高清完整版| 精品视频久久久久久久| 精品久久久一区二区| 欧美xxxx14xxxxx性爽| 欧美性猛xxx| 美女扒开尿口让男人操亚洲视频网站| 亚洲欧美制服中文字幕| 亚洲第一免费播放区| 亚洲电影免费在线观看| 亚洲国产日韩欧美在线99| 成人有码在线播放| 久久久999国产| 中文字幕精品视频| 亚洲美女av在线播放| 91在线视频一区| 奇门遁甲1982国语版免费观看高清| 一本久久综合亚洲鲁鲁| 国产主播欧美精品| 亚洲欧美日韩国产成人| 久久手机精品视频| 亚洲国产一区二区三区四区| 一本一本久久a久久精品综合小说| 国产精品十八以下禁看| 久久99久久久久久久噜噜| 亚洲一区二区三区在线视频| 国产在线高清精品| 国产精品久久久久久久久借妻| 久久久精品免费| 91久久精品一区| 日本亚洲欧美成人| 日韩一区二区福利| 久久精品免费播放| 粉嫩老牛aⅴ一区二区三区| 日韩美女写真福利在线观看| 97免费中文视频在线观看| 国外色69视频在线观看| 海角国产乱辈乱精品视频| 中文在线不卡视频| 欧美性猛交xxxx| 久久精品免费电影| 51色欧美片视频在线观看| 久久免费观看视频| 91精品国产高清久久久久久久久| 日韩av不卡电影| 另类色图亚洲色图| 亚洲第一区第一页| 成人字幕网zmw| 在线观看精品国产视频| 日韩一中文字幕| 97视频在线观看免费高清完整版在线观看| 国产精品扒开腿做爽爽爽视频| 粉嫩av一区二区三区免费野| 欧美亚洲成人网| 欧美风情在线观看| 国产精品一区二区电影| 精品亚洲一区二区三区| 韩国精品美女www爽爽爽视频| 最近2019年手机中文字幕| 亚洲bt欧美bt日本bt| 国产精品网红福利| 欧美另类69精品久久久久9999| 久久久在线免费观看| 日本欧美中文字幕| 亚洲第一精品电影| 精品亚洲va在线va天堂资源站| 社区色欧美激情 | 亚洲精品电影网站| 欧美性猛交99久久久久99按摩| 亚洲人成网站免费播放| 麻豆乱码国产一区二区三区| 久久天天躁狠狠躁夜夜躁| 亚洲电影免费观看| 亚洲a级在线观看| 成人免费直播live| 国产一区二区美女视频| 国产精品视频xxx| 国产欧美日韩中文字幕| 日本人成精品视频在线| 国产欧美日韩综合精品| 日韩视频―中文字幕| 亚洲成年网站在线观看| 亚洲人午夜精品| 亚洲bt欧美bt日本bt| 国产亚洲一区精品|