摘要:閉包也叫匿名函數引入。建議在代碼結構比較亂,需要封裝的時候使用。希望此文能幫到未曾使用或者對的閉包有疑問的同學,同時如果有不對的地方歡迎支出。
閉包也叫匿名函數 PHP5.3 引入。
使用方法
需要調整數組元素中的值
php$data = range(0, 100);//想要每個元素的值都加上.html的后綴 $suffix = ".html"; function makeSuffix($str, $suffix) { return $str . $suffix; } $new_data = array_map(function($item) use ($suffix) { return makeSuffix($item, $suffix); }, $data);
需要改變元素的結構
php$arr = [ [ "id"=>"", "name"=>"", "create_time"=>"", ], ]; $new_data = array_map(function($item) { return ["id"=>$item["id"],"name"=>$item["name"]]; }, $arr); //如果是用foreach還需要在循環里面建立零時變量,把需要的值賦給這個變量執行效率
php$data = range(0, 50000) //1 foreach ($data as &$value) { $value = makeSuffix($value, $suffix); } //2 foreach ($data as $value) { $new[] = makeSuffix($value, $suffix); } //3 array_map(function($item) use ($suffix) { return makeSuffix($item, $suffix); }, $data);
經過5W次執行之后,從結果看1-3,大部分情況執行時間依次升高,其中一次執行結果時間如下
1:0.0260009765625 2:0.038002014160156 3:0.047003030776978結論
閉包的代碼相對優雅,但是邏輯比較容易混淆,相比其他方式執行效率相對較低,要慎用。建議在代碼結構比較亂,需要封裝的時候使用。
希望此文能幫到未曾使用或者對 PHP 的閉包有疑問的同學,同時如果有不對的地方歡迎支出。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20942.html
摘要:實際上,閉包和匿名函數是偽裝成函數的對象。容器流程淺析是社區中比較流行的容器。服務提供者服務提供者是連接容器與具體功能實現類的橋梁。服務提供者需要實現接口所有服務提供者必須實現接口方法。但已經完成了服務提供者的注冊工作。 需要具備的知識點 閉包 閉包和匿名函數在PHP5.3.0中引入的。 閉包是指:創建時封裝周圍狀態的函數。即使閉包所處的環境不存在了,閉包中封裝的狀態依然存在。 理論上...
摘要:也正式因為類的反射很多框架才能實現依賴注入自動解決類與類之間的依賴關系,這給我們平時的開發帶來了很大的方便。為了更好地理解,我們通過一個例子來看類的反射,以及如何實現依賴注入。反射出方法的參數其返回值為對象構成的數組。 PHP具有完整的反射 API,提供了對類、接口、函數、方法和擴展進行逆向工程的能力。通過類的反射提供的能力我們能夠知道類是如何被定義的,它有什么屬性、什么方法、方法都有...
摘要:響應式原理之不論如何,最終響應式數據都要通過來實現,實際要借助新增的。在函數內,首先實例化一個實例,會在稍后添加為響應式數據自定義的中發揮作用。只有數組和對象才可能是響應式,才能返回實例。參考鏈接技術內幕揭開數據響應系統的面紗源碼 Vue響應式原理之defineReactive defineReactive 不論如何,最終響應式數據都要通過defineReactive來實現,實際要借助...
摘要:任何一層報錯,都能用捕獲總結是一個非常輕量級的框架,只實現了中間件處理流程和對對象的封裝。其他的功能都由外部中間件提供。 koa 的中間件機制巧妙的運用了閉包和 async await 的特點,形成了一個洋蔥式的流程,和 JS 的事件流 (捕獲 -> target -> 冒泡) 相似 handleRequest(ctx, fnMiddleware) { const res ...
閱讀 1408·2023-04-26 01:58
閱讀 2282·2021-11-04 16:04
閱讀 1753·2021-08-31 09:42
閱讀 1765·2021-07-25 21:37
閱讀 1066·2019-08-30 15:54
閱讀 2074·2019-08-30 15:53
閱讀 3047·2019-08-29 13:28
閱讀 2687·2019-08-29 10:56