詳解php 使用Callable Closure強制指定回調類型
詳解php 使用Callable Closure強制指定回調類型
如果一個方法需要接受一個回調方法作為參數(shù),我們可以這樣寫
<?php function testCallBack($callback){ call_user_func($callback); } function callback(){ echo 'do sth callback'; } testCallBack('callback'); ?>
但我們不能確定回調方法是否可以調用,因此需要做很多額外的工作去檢查這個回調方法是否可以調用。
有什么更好的方法可以判斷回調方法是否可調用?
我們可以使用callable來強制指定參數(shù)為回調類型,這樣可以保證回調方法必須是可以調用的。
<?php function testCallBack($callback){ call_user_func($callback); } function callback(){ echo 'do sth callback'; } testCallBack('abc'); ?>
執(zhí)行后,提示警告:Warning: call_user_func() expects parameter 1 to be a valid callback, function ‘abc' not found or invalid function name 程序能執(zhí)行到dosth內部的處理,這樣就需要做很多額外的工作去檢查這個回調方法是否可以調用。
<?php function testCallBack(callable $callback){ call_user_func($callback); } function callback(){ echo 'do sth callback'; } testCallBack('abc'); ?>
執(zhí)行后,提示錯誤:TypeError: Argument 1 passed to testCallBack() must be callable 程序并不能執(zhí)行到dosth內部的處理,從參數(shù)類型處就已經做了檢查處理,起到保護作用。
<?php $f = function () { return 100; }; function testClosure(Closure $callback) { return $callback(); } $a = testClosure($f); print_r($a); //100 exit;
因此,如果方法的參數(shù)是回調方法,都應加上callable強制指定為回調類型,這樣可以減少調用的錯誤和提高程序的質量。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
php專用數(shù)組排序類ArraySortUtil用法實例
這篇文章主要介紹了php專用數(shù)組排序類ArraySortUtil用法,實例分析了ArraySortUtil實現(xiàn)數(shù)組排序的方法與對應使用技巧,需要的朋友可以參考下2015-04-04php expects parameter 1 to be resource, array given 錯誤
從名字可以看出來這是說你傳的參數(shù)有問題,也就是說,你在定義傳遞參數(shù)的時候 例如 mysql_query($query,$result),這兩個參數(shù),你只用了$query這個參數(shù),那么$result這個參數(shù),沒有使用,就會報這個錯誤2011-03-03php 自定義函數(shù)實現(xiàn)將數(shù)據(jù) 以excel 表格形式導出示例
這篇文章主要介紹了php 自定義函數(shù)實現(xiàn)將數(shù)據(jù) 以excel 表格形式導出,結合實例形式分析了PHP操作二維數(shù)組的遍歷與Excel格式輸出相關實現(xiàn)技巧,需要的朋友可以參考下2019-11-11php壓縮HTML函數(shù)輕松實現(xiàn)壓縮html/js/Css及注意事項
如何提高網(wǎng)頁加載速度需要對網(wǎng)頁怎樣的優(yōu)化等等,都是站長們所關心的問題,其實壓縮網(wǎng)頁的方法很多,本文將講解一下php壓縮HTML函數(shù)輕松實現(xiàn)壓縮html/js/Css,感興趣的朋友可以了解下,希望本文對你有所幫助2013-01-01PHP+mysql實現(xiàn)從數(shù)據(jù)庫獲取下拉樹功能示例
這篇文章主要介紹了PHP+mysql實現(xiàn)從數(shù)據(jù)庫獲取下拉樹功能,結合實例形式分析了php+mysql數(shù)據(jù)庫查詢及select下拉框輸出查詢結果的實現(xiàn)技巧,需要的朋友可以參考下2017-01-01