先看看什么是闭包,闭包也就是所谓的匿名函数,只是函数的一种隐式定义,从结构化的角度可以理解为,有且只有一次调用。匿名函数并不是一个函数,而是Closure类的一个对象,Closure类是一个final类,不可以继承,同时也不可以被实例化,那么如何通过声明一个匿名函数就实现了Closure类的实例化了呢?
以下是php的源码中的部分代码:
还是看看闭包怎么用吧!先声明,后调用。先看闭包的几种使用场景。
场景一: 简单函数,分为使用use和不使用use
由此可见,加use和不加use的区别,就是use能处理外部输入的参数,而function后面的括号,能处理内部参数(实现递归)和接受外部输入的参数
场景二: 实现回调
场景三: 实现类的注册
闭包的使用,可以使代码更加的紧凑,耦合性更低,使对代码的结构看起来更加的美观,至于性能问题,是php内核实现的,预编译的时候生成,所以可以不用担心!