首页 > 编程 > PHP > 正文

Laravel框架中常用PHP语法-匿名函数

2019-11-11 02:11:23
字体:
来源:转载
供稿:网友

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 1

2、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与后面的提供服务的匿名函数绑定起来,用于服务解析,服务就是通过匿名函数实现的。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表