PHP之道-函数式编程

PHP支持一流的函数,意味着函数可以被赋值到一个变量。用户自定义以及内建函数都可以被变量引用以及动态调用。函数可以作为参数传递到其他函数中,函数也可以返回其他函数(这个特性被称为高阶函数)。

递归,这是一个允许函数调用它本身的特性,它在语言中被支持,但是大多数PHP代码都是用迭代。

匿名函数(以及闭包支持)自从PHP5.3以后出现(2009)。

PHP 5.4增加了绑定闭包作用域到对象的特性,也提高回调的支持,如回调函数几乎在任何情况下都可以与匿名函数互换。

高阶函数最多的使用场景是实现策略模式。内建函数array_filter 需要一个数组参数(data)以及一个用于过滤每一个数组项的函数(一个策略或者一个回调)。

闭包是一个可以访问从外部作用域引进来的非全局变量。理论上,闭包是一个带有参数的函数。那些参数在定义时被上下文封闭起来,对外部是不可见的。闭包可以用一个很干净利索的方式解决变量作用域的限制。

下面一个例子我们使用闭包来定义一个在过滤器外面返回一个过滤器到array_filter的函数。

每一个在滤子族的过滤函数接收一个大于某个最小值的值。单个被criteria_greater_than函数返回的过滤器是一个拥有在作用域中被值封闭起来的$min参数的闭包(当criteria_greater_than被调用时作为参数传入)。

为了引入$min变量到创建的函数当中,提前绑定是默认被使用的。事实上,在引入的时候,延迟绑定应该使用引用。想象一个模板或验证库,此时闭包被定义于在作用域中捕捉变量然后当匿名函数执行的时候访问它们。

第一次做翻译,有些地方还是翻译得不太好,希望各位指正。

更多分享,敬请关注

本文来源网络,侵立删!

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180118A10NZJ00?refer=cp_1026

相关快讯

扫码关注云+社区