Laravel框架之所以被称为优雅的框架,是因为他在框架中使用大量的php新语法,包括命名空间、匿名函数、反射机制、后期静态绑定等,才使得Laravel框架显得简洁易扩展。
匿名函数(Anonymous functions)也叫闭包函数(Closure),即一个没有指定名称的函数,经常用作回调函数参数(callback)的值。
1、匿名函数的使用 通常我们在调用函数时,传入的参数是数据,那么只能通过参数对函数的结果进行控制,无法控制其过程,而匿名函数的存在既可以作为参数传给函数,也可以作为变量赋值,进行控制函数的执行过程,因此,匿名函数的引入增强了程序编写的灵活性,可以实现更加高效的设计方案。下面给出相应的实例:
<?php$array = array(1,2,3,4);//array_walk 使用用户自定义函数对数组中的每个元素做回调处理array_walk($array, function($value){echo $value});输出: 1 2 3 4匿名函数的另一个作用是可以从父作用域中继承变量,即匿名函数在定义的时候如果需要使用作用域外的变量,可以使用use关键字来继承作用域外的变量,具体实例如下:
<?phpfunction getCounter() { $i = 0; return function() use($i) { echo ++$i; };}$counter = getCounter();$counter();$counter();输出:1 12、Laravel框架中的应用 在Laravel框架中大量地使用了匿名函数,如在服务提供者注册过程中,通过将服务名称与提供服务的匿名函数进行绑定,在使用时可以实现动态服务解析。这里所有的服务可以通俗地理解为一种资源的提供,这个字段可以是一个类的实例、一个路径或是一个文件等,提供服务就是提供一种资源。具体实例如下:
文件 Illuminate/Routing/ControllerServicePRovider.php
<?phpnamespace Illuminate/Routing;use Illuminate/Support/ServiceProvider;class ControllerServiceProvider extends ServiceProvider{ //注册服务提供者 public function register() { $this->app->singleton('illuminate.route.dispatcher', function($app){ return new ControllerDispatcher($app['router'], $app); }); }}从上面例子中可以看出,这里的$this->app->singleton()函数的作用是将服务名illuminate.route.dispatcher与后面的提供服务的匿名函数绑定起来,用于服务解析,服务就是通过匿名函数实现的。
新闻热点
疑难解答
图片精选