php 的闭包函数有什么用

2016-04-12 23:15:46 +08:00
 corboy

简单 demo 能写,也能懂,但还是搞不懂这玩意是干嘛的..求推荐点精华帖

3286 次点击
所在节点    PHP
8 条回复
msg7086
2016-04-12 23:30:52 +08:00
应该是可以绑定当前作用域下的变量并且甩锅给其他程序吧(?
corboy
2016-04-13 00:02:04 +08:00
xuwenmang
2016-04-13 00:13:43 +08:00
网友帮你搜系列
bombless
2016-04-13 10:50:32 +08:00
用来搞高阶函数的
习惯用高阶函数的会用的很爽,不会用的其实一般也不影响你实现自己的东西
bombless
2016-04-13 10:52:02 +08:00
最常见用法应该算是配合 usort array_filter array_map 吧。
jfcherng
2016-04-13 14:37:10 +08:00
在 preg_replace_callback 中也很好用
jalen
2016-04-13 15:01:19 +08:00
@corboy 完全没头绪。。
jtjing
2016-05-20 19:53:50 +08:00
大部分 php 初学者大部分时间都在使用框架 如 tp , laravel 等,会发现很多之前学的东西例如设计模式, oo 思想,魔术方法__call 等等几乎用不上,框架给你提供了一套类似友好的模式,你一直再熟悉这样的模式,完成你的工作。经验积累。。 up..up...up 然而当你自己开始写框架的时候你会发现提供一种良好的写法例如: App\User::find(1)->where(1)->get(),会用到之前所学的所有知识,你要让你写的框架给使用者提供一种好看优雅省事的写法,例如 foo(function(){ do sometings ! });这个时候你就要考虑为了实现这样“好看的”写法我们要在框架中怎么实现,闭包?魔术方法?我为了实现更加好看的写法这些东西能帮助我。
1.上面说明了你为什么单独把闭包拿出来,还有为什么闭包在你看来这么不解的原因。
2.说一下闭包我的见解:一个 A 函数里面有一个变量$a, 当执行这个函数以后函数体 以及 函数内部的所有东西全部释放,当这个函数又增加了一个函数 B ,这个时候 A 函数就有 2 个东西变量$a 和函数 B ,但是这个时候函数变量$a 传入了函数 B ,当执行完 A 的时候 函数体 释放了,然而$a 变量却不能释放,因为 B 函数在用,当 B 函数也用完了就可以释放了。
闭包是一个思想, php 中使用匿名函数实现闭包,也就是说匿名函数可以做别的事情, php 开发者跟匿名函数说你在帮我实现一下闭包吧,好呀。如果 php 开发者是你你可能说, C{} 这种写法就是闭包。随便你.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/270579

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX