PHP的闭包中的use再到整个PHP闭包

本来呢没当回事,没有认为这个有多么重要。(其实太重要了)
看到Laravel文档里面关于 服务容器 还有《Laravel框架关键技术解析》里面对 laravel 容器实现理解这块的

function($c) use ($abstract, $concrete)

这块 看到了 作为PHPer这么长时间 不怎么接触的语法(其实接触了n++次没当回事)

于是补一发文档~
参考资料

php – 闭包 – 官方文档
徐志文程序猿 – PHP匿名函数和闭包

和function关键字写到一起的use究竟何用?

先把自己的疑惑解决掉:这个use干啥的 —-
其实很容易理解这段 use 是做什么的


protected function getClosure($abstract, $concrete) {

return function($c) use ($abstract, $concrete) {
$method = ($abstract == $concrete) ? 'build' : 'make';
return $c->$method($concrete);
};

}

首先聚焦这个return的闭包函数 $c 意义非凡(个shi)只是传递进去的函数调用参数。
use后面的东西呢!
emmmmmm 闭包和匿名函数其实很像,
不过它比匿名函数拥有一项技能,
就是它可以通过 use 把全局变量加载到局部变量中。(←此句话摘自别人家的博客)

闭包函数干啥的?

话题退出来,再到整个需要讨论的问题:闭包函数

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。 —PHP官方文档

如果能理解官方文档的童鞋请务必直奔官方文档,下文只是让不懂的童鞋理解一下。
emmm 大概这么说 闭包函数(匿名函数) 就是一个没有名字的函数。
这样的函数 很容易 作为 变量 甚至是参数 来给别人调用,
是的,不光 整数、浮点数、字符串、数组可以作为变量 传来传去,
函数也是可以作为变量传来传去的。如果有被Javascript“邪教”洗脑过的同学很容易理解这点。

匿名函数怎么用?
1. 参数的形式: 通过将匿名函数以参数的方式注入到另一个函数的方式。
2. 变量的形式: 我们将一个匿名函数赋值给了一个变量,当然这里其实也可以说这个函数有了个“假名字”,嗯,不是真名字,然后我们通过在变量名后面加括号()的方式来调用即可。(摘自别人家的文章)

但是渣新的PHPer呢,如果还没有应用到类似 array_walk 这一系列清爽操作的同学建议走一走用一下,
这样很容易对闭包函数的“有用处”加深理解,他并不是什么羞涩的概念,而是一个让你觉得更方便的工具。

和面向对象编程的概念被提出一样,因为根据现实环境场景在软件开发中进行建模,面向对象的理念确实很合适。
emmm 如果你还是没有理解面向对象啥的,建议点击浏览器右上角的 [x] 关闭此页面。

===此文到此结束===
超级建议看看↑上面的参考资料(这里只是点到为止啦,毕竟是个无人光顾的小站)2333,懒死勿喷x

发布者

ShellV

高中狗、喜欢前端、运维、AcgBag 动漫社区创始站长