国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

詳解php 使用Callable Closure強制指定回調類型

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

如果一個方法需要接受一個回調方法作為參數,我們可以這樣寫:

  1. <?php  
  2. function testCallBack($callback){  
  3.   call_user_func($callback);  
  4. }  
  5.    
  6. function callback(){  
  7.   echo 'do sth callback';  
  8. }  
  9.    
  10. testCallBack('callback');  
  11. ?>  

但我們不能確定回調方法是否可以調用,因此需要做很多額外的工作去檢查這個回調方法是否可以調用。

有什么更好的方法可以判斷回調方法是否可調用?

我們可以使用callable來強制指定參數為回調類型,這樣可以保證回調方法必須是可以調用的。

  1. <?php  
  2. function testCallBack($callback){  
  3.   call_user_func($callback);  
  4. }  
  5.    
  6. function callback(){  
  7.   echo 'do sth callback';  
  8. }  
  9.    
  10. testCallBack('abc');  
  11. ?>  

執行后,提示警告:Warning: call_user_func() expects parameter 1 to be a valid callback, function ‘abc' not found or invalid function name 程序能執行到dosth內部的處理,這樣就需要做很多額外的工作去檢查這個回調方法是否可以調用。

  1. <?php  
  2. function testCallBack(callable $callback){  
  3.   call_user_func($callback);  
  4. }  
  5.    
  6. function callback(){  
  7.   echo 'do sth callback';  
  8. //Vevb.com 
  9.    
  10. testCallBack('abc');  
  11. ?> 

執行后,提示錯誤:TypeError: Argument 1 passed to testCallBack() must be callable 程序并不能執行到dosth內部的處理,從參數類型處就已經做了檢查處理,起到保護作用。

  1. $f = function () {  
  2.   return 100;  
  3. };  
  4.    
  5. function testClosure(Closure $callback) {  
  6.   return $callback();  
  7. }  
  8.    
  9. $a = testClosure($f);  
  10. print_r($a); //100  
  11. exit;  

因此,如果方法的參數是回調方法,都應加上callable強制指定為回調類型,這樣可以減少調用的錯誤和提高程序的質量。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长垣县| 乐东| 澜沧| 武邑县| 蓝田县| 墨江| 博湖县| 肥西县| 烟台市| 宁都县| 秭归县| 云阳县| 惠东县| 建水县| 江北区| 法库县| 司法| 江达县| 康定县| 台东市| 达尔| 柳州市| 西乡县| 灵璧县| 宾阳县| 巴楚县| 长汀县| 黄冈市| 阿图什市| 文安县| 广南县| 新干县| 从江县| 大庆市| 乐都县| 普宁市| 乌兰浩特市| 乡宁县| 阿拉善右旗| 宝坻区| 搜索|