国产探花免费观看_亚洲丰满少妇自慰呻吟_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強制指定為回調類型,這樣可以減少調用的錯誤和提高程序的質量。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平果县| 石屏县| 新干县| 饶阳县| 塔河县| 景东| 故城县| 旌德县| 盘山县| 辽中县| 田阳县| 平顶山市| 玛沁县| 衡东县| 玉屏| 四子王旗| 靖宇县| 长泰县| 象州县| 平湖市| 屯留县| 吉木萨尔县| 微山县| 洪洞县| 易门县| 乌海市| 会昌县| 小金县| 乌鲁木齐县| 洛宁县| 札达县| 平安县| 修武县| 历史| 弋阳县| 华容县| 赤城县| 冷水江市| 达日县| 凤翔县| 南郑县|