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

首頁 > 語言 > PHP > 正文

PHP基于反射獲取一個類教程

2024-09-04 11:43:51
字體:
來源:轉載
供稿:網友

使用PHP基于反射獲取一個類也是現在很多編程人員會經常遇到的,大多數的人可能還不知道怎么通過PHP反射獲取一個類,下面文章就給大家具體介紹下獲取操作方法,感興趣的一起來了解下。

當我們使用一個類時既沒有源碼也沒有文檔時(尤其是php擴展提供的類,比如mysqli,Redis類),我們該怎么知道這個類中提供了哪些方法,以及每個方法該怎么使用呢,此時就該PHP中強大的反射登場了,下面以Redis擴展為例用代碼演示:

  1. $ref = new ReflectionClass('Redis'); 
  2. $consts = $ref->getConstants(); //返回所有常量名和值 
  3. echo "----------------consts:---------------" . PHP_EOL; 
  4. foreach ($consts as $key => $val
  5.   echo "$key : $val" . PHP_EOL; 
  6. $props = $ref->getDefaultProperties(); //返回類中所有屬性 
  7. echo "--------------------props:--------------" . PHP_EOL . PHP_EOL; 
  8. foreach ($props as $key => $val
  9.   echo "$key : $val" . PHP_EOL;  // 屬性名和屬性值 
  10. }//Vevb.com 
  11. $methods = $ref->getMethods();   //返回類中所有方法 
  12. echo "-----------------methods:---------------" . PHP_EOL . PHP_EOL; 
  13. foreach ($methods as $method
  14.   echo $method->getName() . PHP_EOL; 

返回結果:

  1. ----------------consts:--------------- 
  2. REDIS_NOT_FOUND : 0 
  3. REDIS_STRING : 1 
  4. REDIS_SET : 2 
  5. REDIS_LIST : 3 
  6. REDIS_ZSET : 4 
  7. REDIS_HASH : 5 
  8. ATOMIC : 0 
  9. MULTI : 1 
  10. PIPELINE : 2 
  11. OPT_SERIALIZER : 1 
  12. OPT_PREFIX : 2 
  13. OPT_READ_TIMEOUT : 3 
  14. SERIALIZER_NONE : 0 
  15. SERIALIZER_PHP : 1 
  16. OPT_SCAN : 4 
  17. SCAN_RETRY : 1 
  18. SCAN_NORETRY : 0 
  19. AFTER : after 
  20. BEFORE : before 
  21. --------------------props:-------------- 
  22. -----------------methods:--------------- 
  23. __construct 
  24. __destruct 
  25. connect 
  26. pconnect 
  27. close 
  28. ping 
  29. echo 
  30. get 
  31. set 
  32. setex 
  33. psetex 
  34. setnx 
  35. getSet 
  36. randomKey 
  37. renameKey 
  38. renameNx 
  39. getMultiple 
  40. exists 
  41. delete 
  42. incr 
  43. incrBy 
  44. incrByFloat 
  45. decr 
  46. decrBy 
  47. type 
  48. append 
  49. getRange 
  50. setRange 
  51. getBit 
  52. setBit 
  53. strlen 
  54. getKeys 
  55. sort 
  56. sortAsc 
  57. sortAscAlpha 
  58. sortDesc 
  59. sortDescAlpha 
  60. lPush 
  61. rPush 
  62. lPushx 
  63. rPushx 
  64. lPop 
  65. rPop 
  66. blPop 
  67. brPop 
  68. lSize 
  69. lRemove 
  70. listTrim 
  71. lGet 
  72. lGetRange 
  73. lSet 
  74. lInsert 
  75. sAdd 
  76. sSize 
  77. sRemove 
  78. sMove 
  79. sPop 
  80. sRandMember 
  81. sContains 
  82. sMembers 
  83. sInter 
  84. sInterStore 
  85. sUnion 
  86. sUnionStore 
  87. sDiff 
  88. sDiffStore 
  89. setTimeout 
  90. save 
  91. bgSave 
  92. lastSave 
  93. flushDB 
  94. flushAll 
  95. dbSize 
  96. auth 
  97. ttl 
  98. pttl 
  99. persist 
  100. info 
  101. resetStat 
  102. select 
  103. move 
  104. bgrewriteaof 
  105. slaveof 
  106. object 
  107. bitop 
  108. bitcount 
  109. bitpos 
  110. mset 
  111. msetnx 
  112. rpoplpush 
  113. brpoplpush 
  114. zAdd 
  115. zDelete 
  116. zRange 
  117. zReverseRange 
  118. zRangeByScore 
  119. zRevRangeByScore 
  120. zRangeByLex 
  121. zCount 
  122. zDeleteRangeByScore 
  123. zDeleteRangeByRank 
  124. zCard 
  125. zScore 
  126. zRank 
  127. zRevRank 
  128. zInter 
  129. zUnion 
  130. zIncrBy 
  131. expireAt 
  132. pexpire 
  133. pexpireAt 
  134. hGet 
  135. hSet 
  136. hSetNx 
  137. hDel 
  138. hLen 
  139. hKeys 
  140. hVals 
  141. hGetAll 
  142. hExists 
  143. hIncrBy 
  144. hIncrByFloat 
  145. hMset 
  146. hMget 
  147. multi 
  148. discard 
  149. exec 
  150. pipeline 
  151. watch 
  152. unwatch 
  153. publish 
  154. subscribe 
  155. psubscribe 
  156. unsubscribe 
  157. punsubscribe 
  158. time 
  159. eval 
  160. evalsha 
  161. script 
  162. debug 
  163. dump 
  164. restore 
  165. migrate 
  166. getLastError 
  167. clearLastError 
  168. _prefix 
  169. _serialize 
  170. _unserialize 
  171. client 
  172. scan 
  173. hscan 
  174. zscan 
  175. sscan 
  176. pfadd 
  177. pfcount 
  178. pfmerge 
  179. getOption 
  180. setOption 
  181. config 
  182. slowlog 
  183. rawCommand 
  184. getHost 
  185. getPort 
  186. getDBNum 
  187. getTimeout 
  188. getReadTimeout 
  189. getPersistentID 
  190. getAuth 
  191. isConnected 
  192. getMode 
  193. wait 
  194. pubsub 
  195. open 
  196. popen 
  197. lLen 
  198. sGetMembers 
  199. mget 
  200. expire 
  201. zunionstore 
  202. zinterstore 
  203. zRemove 
  204. zRem 
  205. zRemoveRangeByScore 
  206. zRemRangeByScore 
  207. zRemRangeByRank 
  208. zSize 
  209. substr 
  210. rename 
  211. del 
  212. keys 
  213. lrem 
  214. ltrim 
  215. lindex 
  216. lrange 
  217. scard 
  218. srem 
  219. sismember 
  220. zrevrange 
  221. sendEcho 
  222. evaluate 
  223. evaluateSha 

進一步當我們想要知道具體一個方法怎么使用,有哪些參數時,我們可以對這個方法進行進一步的反射,以上例中的bitpos方法為例(文檔中并沒有介紹該方法的使用)

  1. echo '---------------------params-----------------------' . PHP_EOL . PHP_EOL; 
  2. $reflectMethod = $ref->getMethod('bitpos');  //傳入方法名即可 
  3. echo $reflectMethod;  // 會調用$reflectMethod->__toString() 返回可打印的形式; 

打印結果:

---------------------params-----------------------

Method [ <internal:redis> public method bitpos ] {}

并沒有看到需要參數,可能與該方法的具體實現有關,具體原因只能去看redis擴展的代碼實現,正常情況下應該是返回如下的形式,以mysqli的select_db方法為例:

  1. $ref = new ReflectionClass('mysqli'); 
  2. echo '---------------------params-----------------------' . PHP_EOL . PHP_EOL; 
  3. $reflectMethod = $ref->getMethod('select_db');  //傳入方法名即可 
  4. echo $reflectMethod;  // 會調用$reflectMethod->__toString() 返回可打印的形式; 
  5.  
  6. ---------------------params----------------------- 
  7. Method [ <internal:mysqli> public method select_db ] { 
  8.  - Parameters [1] { 
  9.   Parameter #0 [ <required> $database ] 
  10.  } 

這時就沒辦法了 我們只能靠對redis的理解以及參考相似方法來使用了,比如bitop

public function bitOp( $operation, $retKey, ...$keys) {}

貼下最終的方法調用:

  1. $redis = new Redis(); 
  2. $redis->connect('127.0.0.1'); 
  3. $redis->setBit('bit', 15, 1); 
  4. echo 'bitpos: ' . $redis->bitpos('bit', 1) . PHP_EOL; //bitpos: 15 
  5. $redis->close(); 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品羞羞答答| 亚洲欧美日韩中文在线制服| 国产91热爆ts人妖在线| 亚洲天堂色网站| 色综合91久久精品中文字幕| 精品国产网站地址| 欧美一区二区三区艳史| 久久久久久国产精品久久| 欧美激情第一页xxx| 久久全国免费视频| 伊人伊成久久人综合网小说| 欧美日韩国产一区中文午夜| 亚洲国产成人在线播放| 久久久久久中文字幕| 精品久久久香蕉免费精品视频| 成人网欧美在线视频| 欧美一级成年大片在线观看| 国产成人亚洲综合青青| 国产91网红主播在线观看| 7m第一福利500精品视频| 久久久久久久国产| 日韩欧美在线免费观看| 亚洲欧美激情精品一区二区| 精品视频9999| 精品国产91久久久| 久久亚洲精品小早川怜子66| 欧美精品aaa| 色七七影院综合| 国产精品一区二区久久久| 国产视频精品va久久久久久| 45www国产精品网站| 久久97久久97精品免视看| 亚洲欧美国产精品专区久久| 97国产一区二区精品久久呦| 亚洲精品白浆高清久久久久久| 色婷婷久久一区二区| 在线看片第一页欧美| 欧美激情视频网址| 青青草99啪国产免费| 国产精品电影一区| 色天天综合狠狠色| 国产精品久久久久久久天堂| 亚洲欧美中文日韩在线v日本| 色悠悠久久88| 久久久久久久电影一区| 日韩在线精品一区| 日韩动漫免费观看电视剧高清| 日韩精品福利网站| 欧美在线播放视频| 久久久久久97| 亚洲高清久久久久久| 亚洲视频在线播放| 亚洲国语精品自产拍在线观看| 欧美丰满少妇xxxxx| 亚洲精品av在线播放| 91香蕉国产在线观看| 伦理中文字幕亚洲| 亚洲国产欧美一区二区丝袜黑人| 国产一区二区三区视频| 91九色国产视频| 91精品视频网站| 欧美乱妇高清无乱码| 亚洲欧美日韩高清| 91精品国产高清自在线| 欧美大成色www永久网站婷| 欧美极品少妇xxxxⅹ免费视频| 亚洲精品视频久久| 日韩在线精品一区| 亚洲国产97在线精品一区| 日韩欧美综合在线视频| 欧美亚洲另类在线| 亚洲激情中文字幕| 欧美另类高清videos| 亚洲国产精品久久精品怡红院| 日韩视频免费大全中文字幕| 97成人超碰免| 日韩视频在线免费| 国产激情999| 一区二区三区视频免费| 96精品视频在线| 福利微拍一区二区| 中文字幕在线看视频国产欧美| 成人中文字幕+乱码+中文字幕| 91在线观看欧美日韩| 亚洲аv电影天堂网| 国产精品久久久久久网站| 成人黄色影片在线| 国内成人精品一区| 色噜噜国产精品视频一区二区| 日本久久久久久久久| 国产精品免费小视频| 欧美激情视频三区| 国模叶桐国产精品一区| 亚洲第一免费播放区| 一本色道久久88亚洲综合88| 国产欧美一区二区三区在线看| 亚洲欧美资源在线| 久久久久久久网站| 国产在线日韩在线| 在线日韩第一页| 国产精品欧美日韩| 九九热这里只有精品6| 亚洲国产精品中文| 亚洲自拍偷拍视频| 久久久免费观看| 亚洲欧洲美洲在线综合| 亚洲精品福利在线观看| 一本一本久久a久久精品综合小说| 国产成人一区二区| 精品一区二区电影| 日韩电影中文字幕av| 中文字幕日韩欧美在线| 欧美日韩精品国产| 久久精视频免费在线久久完整在线看| 日韩中文字幕在线观看| 2019中文在线观看| 国产精品欧美日韩一区二区| 77777少妇光屁股久久一区| 亚洲国产精品电影| 国产精品91久久| 国产91在线播放九色快色| 亚洲国产精品久久久久久| 福利二区91精品bt7086| 亚洲护士老师的毛茸茸最新章节| 久久久亚洲国产天美传媒修理工| 亚洲国产另类久久精品| 国产精品毛片a∨一区二区三区|国| 亚洲最大av网站| 亚洲综合中文字幕在线| 九九久久久久99精品| 亚洲老头同性xxxxx| 一本色道久久88综合亚洲精品ⅰ| 欧美成人黄色小视频| 欧美久久精品一级黑人c片| 久久99视频免费| 久久琪琪电影院| 久久免费精品日本久久中文字幕| 国产精品福利网站| 欧美高清视频免费观看| 亚洲精品99久久久久| 久久久久久国产精品美女| 91久久精品日日躁夜夜躁国产| 92福利视频午夜1000合集在线观看| 国产精品吴梦梦| 国产91精品网站| 热久久免费视频精品| 最近2019中文字幕mv免费看| 亚洲国产另类久久精品| 亚洲免费av电影| 国产精品91久久久久久| 亚洲视频专区在线| 亚洲a在线播放| 久久国产精品影片| 日韩电影免费在线观看中文字幕| 成人在线小视频| 欧美成人一二三| 97在线观看免费| 中文字幕在线看视频国产欧美| 国产69精品久久久久久| 亚洲美女性生活视频| 国产精品一区二区久久久久| 亚洲精品永久免费| 亚洲精品综合精品自拍| 日本一区二区三区四区视频|