久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP基于反射獲取一個(gè)類中所有的方法

這篇文章主要介紹了PHP基于反射獲取一個(gè)類中所有的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php使用反射機(jī)制獲取類中所有屬性與方法的操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了PHP基于反射獲取一個(gè)類中所有的方法。分享給大家供大家參考,具體如下:

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

<?php
$ref = new ReflectionClass('Redis');
$consts = $ref->getConstants(); //返回所有常量名和值
echo "----------------consts:---------------" . PHP_EOL;
foreach ($consts as $key => $val)
{
  echo "$key : $val" . PHP_EOL;
}
$props = $ref->getDefaultProperties(); //返回類中所有屬性
echo "--------------------props:--------------" . PHP_EOL . PHP_EOL;
foreach ($props as $key => $val)
{
  echo "$key : $val" . PHP_EOL;  // 屬性名和屬性值
}
$methods = $ref->getMethods();   //返回類中所有方法
echo "-----------------methods:---------------" . PHP_EOL . PHP_EOL;
foreach ($methods as $method)
{
  echo $method->getName() . PHP_EOL;
}

返回結(jié)果:

----------------consts:---------------
REDIS_NOT_FOUND : 0
REDIS_STRING : 1
REDIS_SET : 2
REDIS_LIST : 3
REDIS_ZSET : 4
REDIS_HASH : 5
ATOMIC : 0
MULTI : 1
PIPELINE : 2
OPT_SERIALIZER : 1
OPT_PREFIX : 2
OPT_READ_TIMEOUT : 3
SERIALIZER_NONE : 0
SERIALIZER_PHP : 1
OPT_SCAN : 4
SCAN_RETRY : 1
SCAN_NORETRY : 0
AFTER : after
BEFORE : before
--------------------props:--------------
-----------------methods:---------------
__construct
__destruct
connect
pconnect
close
ping
echo
get
set
setex
psetex
setnx
getSet
randomKey
renameKey
renameNx
getMultiple
exists
delete
incr
incrBy
incrByFloat
decr
decrBy
type
append
getRange
setRange
getBit
setBit
strlen
getKeys
sort
sortAsc
sortAscAlpha
sortDesc
sortDescAlpha
lPush
rPush
lPushx
rPushx
lPop
rPop
blPop
brPop
lSize
lRemove
listTrim
lGet
lGetRange
lSet
lInsert
sAdd
sSize
sRemove
sMove
sPop
sRandMember
sContains
sMembers
sInter
sInterStore
sUnion
sUnionStore
sDiff
sDiffStore
setTimeout
save
bgSave
lastSave
flushDB
flushAll
dbSize
auth
ttl
pttl
persist
info
resetStat
select
move
bgrewriteaof
slaveof
object
bitop
bitcount
bitpos
mset
msetnx
rpoplpush
brpoplpush
zAdd
zDelete
zRange
zReverseRange
zRangeByScore
zRevRangeByScore
zRangeByLex
zCount
zDeleteRangeByScore
zDeleteRangeByRank
zCard
zScore
zRank
zRevRank
zInter
zUnion
zIncrBy
expireAt
pexpire
pexpireAt
hGet
hSet
hSetNx
hDel
hLen
hKeys
hVals
hGetAll
hExists
hIncrBy
hIncrByFloat
hMset
hMget
multi
discard
exec
pipeline
watch
unwatch
publish
subscribe
psubscribe
unsubscribe
punsubscribe
time
eval
evalsha
script
debug
dump
restore
migrate
getLastError
clearLastError
_prefix
_serialize
_unserialize
client
scan
hscan
zscan
sscan
pfadd
pfcount
pfmerge
getOption
setOption
config
slowlog
rawCommand
getHost
getPort
getDBNum
getTimeout
getReadTimeout
getPersistentID
getAuth
isConnected
getMode
wait
pubsub
open
popen
lLen
sGetMembers
mget
expire
zunionstore
zinterstore
zRemove
zRem
zRemoveRangeByScore
zRemRangeByScore
zRemRangeByRank
zSize
substr
rename
del
keys
lrem
ltrim
lindex
lrange
scard
srem
sismember
zrevrange
sendEcho
evaluate
evaluateSha

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

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

打印結(jié)果:

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

并沒有看到需要參數(shù),可能與該方法的具體實(shí)現(xiàn)有關(guān),具體原因只能去看redis擴(kuò)展的代碼實(shí)現(xiàn),正常情況下應(yīng)該是返回如下的形式,以mysqli的select_db方法為例:

$ref = new ReflectionClass('mysqli');
echo '---------------------params-----------------------' . PHP_EOL . PHP_EOL;
$reflectMethod = $ref->getMethod('select_db');  //傳入方法名即可
echo $reflectMethod;  // 會調(diào)用$reflectMethod->__toString() 返回可打印的形式;

---------------------params-----------------------
Method [ <internal:mysqli> public method select_db ] {
 - Parameters [1] {
  Parameter #0 [ <required> $database ]
 }
}

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP定義字符串的四種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務(wù)器的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP給源代碼加密的幾種方法匯總(推薦),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇php打開本地exe程序,js打開本地exe應(yīng)用程序,并傳遞相關(guān)參數(shù)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP類的反射來實(shí)現(xiàn)依賴注入過程以及相關(guān)知識點(diǎn)分享,對此有興趣的朋友跟著小編學(xué)習(xí)下吧。
php遍歷一個(gè)文件夾內(nèi)的所有文件和文件夾,并刪除所有文件夾和子文件夾下的所有文件的代碼,通過遞歸方式實(shí)現(xiàn)達(dá)到清空一個(gè)目錄的效果。本文給大家分享實(shí)例代碼,需要的朋友參考
主站蜘蛛池模板: 中文字幕在线观看一区 | 久久免费精品 | 日韩精品视频在线播放 | av网站观看| 99热在线播放 | 欧美精品网站 | 亚洲欧美中文字幕在线观看 | 欧美天堂在线 | 日本在线视频一区二区 | 精品久久久久一区 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 综合久久av | 国产小视频自拍 | 五月婷婷激情网 | 在线a视频网站 | 亚洲精品日韩在线 | 欧美精品片 | 欧美一区二区三区四区视频 | 中文字幕一区二区三区四区 | 亚洲精品视频免费 | 日韩视频在线观看一区二区 | av大全在线 | 亚洲一区二区在线播放 | 中国一级特黄真人毛片免费观看 | www.日韩系列 | 一本一道久久a久久精品蜜桃 | 国产成人jvid在线播放 | 欧美日韩国产精品一区 | 亚州精品成人 | 成人区精品一区二区婷婷 | 一区二区国产精品 | 天天射色综合 | 黑人精品欧美一区二区蜜桃 | 精品视频一区二区三区在线观看 | 日韩精品一区二区三区中文字幕 | 免费一区二区三区 | 色视频成人在线观看免 | 国产精品美女久久久久aⅴ国产馆 | 国产1区 | 欧美一区二区激情三区 | 在线播放国产一区二区三区 |