真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于PHP中is_callable()與method_exists()函數(shù)的用法

今天小編給大家分享的是關(guān)于PHP中is_callable()與method_exists()函數(shù)的用法,很多人都不太了解,今天小編為了讓大家更加了解PHP,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會有所收獲的哦。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)高邑,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

關(guān)于PHP中is_callable()與method_exists()函數(shù)的用法

在很多產(chǎn)品應(yīng)用中,我們經(jīng)常能夠看到以下這種用法,它用來檢查一個對象里的方法是否存在。

SomeMethod($this, TRUE); 
}
?

這段代碼的目的比較容易理解,有一個對象為$object,我們想知道它是否有一個方法為SomeMethod,如果有,就調(diào)用此方法。

這個代碼看起來正確,而且在大部分的時候運行也會正常。但是如果這個$object對象的方法對于當(dāng)前的運行環(huán)境是不可見的,程序還能正常運行嗎?正如這個函數(shù)名方法存在一樣,只是對我們提供的類或?qū)ο髾z查是否有我們所期望的方法,如果有,就返回TRUE,如果沒有,就返回FALSE,這里并沒有考慮可見性的問題。所以,當(dāng)你恰好判斷一個私有或者受保護的方法時,你能夠得到一個正確的返回,但是執(zhí)行的時候,會得到一個“Fatal Error”錯誤警告。

上面這段代碼的真正意圖應(yīng)該理解為:對于提供的類或者對象,我們能否在當(dāng)前的作用域中調(diào)用它的SomeMethod方法。而這正是is_callable()函數(shù)存在的目的。is_callable()函數(shù)接收一個回調(diào)參數(shù),可以指定一個函數(shù)名稱或者一個包含方法名和對象的數(shù)組,如果在當(dāng)前作用域中可以執(zhí)行,就返回TRUE。

SomeMethod($this, TRUE); 
}?>

下面來舉個例子來說明兩者的區(qū)別

';
}

執(zhí)行上面的腳本后,我們會清晰地看到兩個函數(shù)間的差別。

is_callable()還有其他的用法,例如,不檢查所提供的類或方法,只檢查函數(shù)或方法的語法是否正確。像method_exists()一樣,is_callable()可以觸發(fā)類的自動加載。

如果一個對象存在魔術(shù)方法__call,在進行方法判斷時method_exists()會返回FALSE,而is_callable()會返回TRUE。

';
    }
}
$obj = new MethodTest();
$obj->runtest('in object context');
var_dump(method_exists($obj,'runtest'));
var_dump(is_callable(array($obj,'runtest')));
echo '
';

運行結(jié)果

Calling object method runtest in object context 
bool(false) bool(true)

關(guān)于PHP中is_callable()與method_exists()函數(shù)的用法

關(guān)于PHP中is_callable()與method_exists()函數(shù)的用法就分享到這里了,當(dāng)然并不止以上和大家分析的辦法,不過小編可以保證其準(zhǔn)確性是絕對沒問題的。希望以上內(nèi)容可以對大家有一定的參考價值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。


當(dāng)前標(biāo)題:關(guān)于PHP中is_callable()與method_exists()函數(shù)的用法
鏈接地址:http://weahome.cn/article/gjedgp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部