对闭包的理解

本文详细解析了PHP中的闭包与匿名函数概念,包括闭包的定义、匿名函数的三种使用方式以及如何利用闭包进行变量捕获,为读者提供了丰富的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闭包是什么:

答:闭包就是能够读取其他函数内部变量的函数。

闭包函数生效的两个条件:

1、必须先定义一个匿名函数

2、必须要执行一次匿名函数生成闭包函数

 

匿名函数:

//匿名函数
$demo1 = function($name){
    return $name.'最爱的人是:赵敏';
};
//调用匿名函数
echo $demo1('张无忌').'<hr>';

//匿名函数也有自己的作用域,除了传参,还有什么方式引入外部变量
$belle='周芷若';
$belle='凤姐';
$demo2 = function($name) use ($belle)
{
    return $name.'最爱的人是:'.$belle.'<hr>';
};
echo $demo2('张无忌');

 

首先,我们先给闭包函数下一个定义:将匿名函数当作一个普通变量,在另一个函数中调用它,就会形成闭包,这时,匿名函数的作用就是生成一个闭包,所以现在把匿名函数直接成为闭包函数也是没有问题的。

 

匿名函数其实就是一个普通的变量,有三种使用的方式:

1、普通变量

2、函数参数

3、函数返回值(本质还是一个局部变量)

 

//  1、匿名函数当作局部变量来使用(闭包)

$fun1 = function(){
    $name = '无忌哥哥';
    $test = function () use ($name)
    {
        return $name.'我被另一个函数包围住了,快来救我'.'<hr>';
    };
    //调用,必须要执行一次,才能形成闭包
    return $test();
};
echo $fun1();

 

// 2.将匿名函数当作函数参数来使用

$name='无忌哥哥';
$test = function () use ($name)
{
    return $name.'我又被当作参数了,你还要我吗'.'<hr>';
};
$fun2 = function(callable $test)
{
    return $test() ;
};
echo $fun2($test);

 

//3.将匿名函数当作函数的返回值来使用

$fun3 = function(){
    $name = '无忌哥哥';
    //在函数中声明一个匿名函数
    $test = function () use ($name)
    {
        return $name.'我又被当作返回值了,真倒霉'.'<hr>';
    };
    //return $test();
    return $test;   //实际上返回的是一个函数的声明,或者匿名函数的定义
};
echo $fun3()();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值