php闭包简单实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php function getClosure( $i ) { $i = $i . '-' . date ( 'H:i:s' ); return function ( $param ) use ( $i ) { echo "--- param: $param ---\n" ; echo "--- i: $i ---\n" ; }; } $c = getClosure(123); $i = 456; $c ( 'test' ); sleep(3); $c2 = getClosure(123); $c2 ( 'test' ); $c ( 'test' ); /* output: --- param: test --- --- i: 123-21:36:52 --- --- param: test --- --- i: 123-21:36:55 --- --- param: test --- --- i: 123-21:36:52 --- */ |
再来一个实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | $message = 'hello' ; $example = function () use ( $message ){ var_dump( $message ); }; echo $example (); //输出hello $message = 'world' ; //输出hello 因为继承变量的值的时候是函数定义的时候而不是 函数被调用的时候 echo $example (); //重置为hello $message = 'hello' ; //此处传引用 $example = function () use (& $message ){ var_dump( $message ); }; echo $example (); //输出hello $message = 'world' ; echo $example (); //此处输出world //闭包函数也用于正常的传值 $message = 'hello' ; $example = function ( $data ) use ( $message ){ return "{$data},{$message}" ; }; echo $example ( 'world' ); //此处输出world,hello |
个人觉得闭包使用的意义不大,用来看别人的源码就好
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!