日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

闭包(匿名函数) php

發布時間:2025/3/20 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 闭包(匿名函数) php 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

php中的閉包,之前不理解。以前項目中雖然有用到,也是別人怎么用,自己也跟著怎么用,也沒具體去看一下,時間長了就忘了,也不知道閉包是怎么回事。今天網上搜集了關于php閉包相關的文章,看了7,8篇,干貨不多,大都復制粘貼黨,現在根據自己的理解小結一下

閉包支持版本

根據官方文檔里說的closure是5.3.0之后才支持以及很多文章說php是5.3.0之后才引入的,也沒親自驗證過,暫時就理解為php版本大于5.3.0才有了閉包概念,支持閉包。

?

語法

函數:function func ($arg = xxx) {xxx};

匿名函數: 沒有函數名的函數 比如 function($arg = xxx){xxx};

閉包:匿名函數加上use用法 比如 function($arg = xxx)use ($a, $b) {xxx};

?

對比

函數:相關語句塊的集合,可以根據傳入的條件完成一個小功能。

匿名函數:雖然有了函數,但是函數起名字是一件較麻煩的事,且在同一命名空間下,函數命名有可能出現重復。一旦出現重復,程序就會報錯。所以有了匿名函數。

閉包:匿名函數的增加版,添加了use用法,申明時獲取上下文內容,而不是調用時才獲取。

?

閉包優點

網上說閉包有減少foreach,減少函數參數,減少遞歸等好處,感覺這些和閉包關系不大。個人認為,閉包帶來的最大好處在于use。

php中變量有引用一說(其他語言中也有類似的說法),use中的變量存放的可能是一個變量的值拷貝,也可能是一塊內存地址(類似于c語言中的指針)

use中變量存放引用(內存地址)比較好的例子計數器,簡易代碼如下

$start = 0;

$funcCount = function () use (&$start) {$start++; return $start;};

unset($start);

以上3行代碼就定義了一個簡單的計數器,變量start銷毀后,由于閉包中有對start的引用,所以start之前指向的內存地址不會被回收,此時這塊內存地址就脫離程序的掌控,通過$funcCount()可以訪問到這塊內存,執行計數操作并返回,該地址中的值修改常理來說只會被該匿名函數修改,不會被其他程序誤改。

?

暫時就說到這里,有不對的地方,歡迎批評指正,共同進步

轉載于:https://www.cnblogs.com/peter-yan/p/6763384.html

總結

以上是生活随笔為你收集整理的闭包(匿名函数) php的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。