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

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关键字来继承作用域外的变量,具体实例如下:

<?php

function getCounter() {
    $i = 0;
    return function() use($i) {
        echo ++$i;
    };
}

$counter = getCounter();
$counter();
$counter();
输出:1 1

2、Laravel框架中的应用
在Laravel框架中大量地使用了匿名函数,如在服务提供者注册过程中,通过将服务名称与提供服务的匿名函数进行绑定,在使用时可以实现动态服务解析。这里所有的服务可以通俗地理解为一种资源的提供,这个字段可以是一个类的实例、一个路径或是一个文件等,提供服务就是提供一种资源。具体实例如下:

文件 Illuminate\Routing\ControllerServiceProvider.php

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值