PHP匿名函数与匿名类详解
- 陈大剩
- 2020-08-25 23:09:48
- 4553
匿名函数
引用官方的一句话:匿名函数(Anonymous functions),也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。
但是在PHP内,由于匿名函数是通过闭包类实现的( Anonymous functions are implemented using the Closure class),因此多数人混淆了闭包技术和匿名函数;实际上,闭包是一项「技术」或者说「功能」,能够捕获并存储当前当前上下文状态,以供后续使用。 匿名函数就只是一个「函数」,一个没有名字的函数而已。在实际应用中,匿名函数通常伴随着使用闭包技术;但闭包并不一定只能用在匿名函数内。在其他语言内是完全不同的两个概念的(记得区分闭包和匿名函数,匿名函数==闭包)。
匿名函数的形式
常见的几种匿名函数用法(有很多中用法,列举比较常见的)
PHP预定义接口 Closure类
Closure::bind 与 Closure::tobind (就是省略了一个参数)
匿名类
PHP 7 开始支持匿名类。 匿名类很有用,可以创建一次性的简单对象
可以传递参数到匿名类的构造器,也可以扩展(extend)其他类、实现接口(implement interface),以及像其他普通的类一样使用 trait:
匿名类被嵌套进普通 Class 后,不能访问这个外部类(Outer class)的 private(私有)、protected(受保护)方法或者属性。为了访问外部类(Outer class)protected 属性或方法,匿名类可以 extend(扩展)此外部类。为了使用外部类(Outer class)的 private 属性,必须通过构造器传进来
参考
欢迎各位大佬补充;