php基础学习之匿名函数

匿名函数

描述

允许临时创建一个没有指定名称的函数,使用匿名函数可以方便地创建一次性或临时的功能块。

语法

function (){

//函数体

};

样例

(注:匿名函数定义后,需要将其赋值给一个变量,然后通过该变量来调用

这种调用方式有点类似可变函数,注意区分概念!)

php 复制代码
<?php
$test = function () {
    echo "fufu is cute!";
};//这里有个分号不要漏掉
$test();//这种调用方式有点类似可变函数, 注意区分概念

闭包

闭包就是能够读取其它函数内部变量的函数(在php中一般为匿名函数),创建的匿名函数本质上其实是申请一个对象(面向对象思想),所以通常会将其赋值给一个变量,这个对象是Closure类,即闭包类

(php的面向对象技术在本系列不展开细讲,后续应该会再去学习)

对于闭包,可以很简单的理解成一个在函数a内部中定义的匿名函数b,这个匿名函数b具有访问函数a中局部变量的权力,并且可以通过一个手段(use关键字 )使得函数a即使已经执行完毕(正常来说此时函数a的局部变量已经被回收),却仍能通过匿名函数b去访问函数a的局部变量,这也说明了函数a的、被匿名函数b用use关键字所使用的局部变量并未被回收

因为闭包的存在,使得匿名函数b用use关键字获取到的函数a中的局部变量未被回收

------(有点绕,博主尽量解释了,也希望之后自己忘了的话,回来还能看懂吧/(ㄒoㄒ)/~~)

样例

(注意use关键字的语法位置,且use关键字后面的变量需要括号包围,同时请仔细通过注释去理解闭包)

php 复制代码
<?php
function display()
{
    $a = "这是函数test的局部变量a";
    $b = "这是函数test的局部变量b";
    $c = "这是函数test的局部变量c";
    $test = function () use ($a, $b) {
        echo $a . ", " . $b;
    };
    return $test;//将闭包test作为返回值
}
$closure = display();
//正常来说到第11行代码处, 函数display执行完毕, 其局部变量a和b已经被回收
//但由于闭包test用use关键字获取了局部变量a和b, 因此a和b就不会被回收
//而局部变量c就被正常回收了
$closure();//调用匿名函数(闭包), 可以正常输出a和b的值
相关推荐
咩咦11 小时前
C++学习笔记28:静态成员应用:不用循环求1到n的和
c++·学习笔记·类和对象·static·构造函数·oj·静态成员
zb2006412020 小时前
Laravel 9.X核心特性全解析
php·laravel
德迅云安全-上官1 天前
服务器经常宕机是哪些原因造成以及解决办法,如何查找原因
开发语言·php
跨境数据猎手1 天前
跨境电商系统开源PHP多语言架构拆解(下)
开发语言·架构·php
LCG元1 天前
没公网IP怎么远程访问本地部署的大模型?Ollama + cpolar,任何网络环境下都能调用
网络·tcp/ip·php
Ether IC Verifier2 天前
TCP 重传机制详解
服务器·网络·网络协议·tcp/ip·php
catchadmin2 天前
TrueAsync Server 为 PHP 带来了原生的高性能 HTTP 服务器
服务器·http·php
跨境数据猎手2 天前
跨境电商系统开源PHP多语言架构拆解(上)
架构·开源·php
纽格立科技2 天前
CDR标准体系再添三件套:组网、业务、工程同步落地
服务器·开发语言·人工智能·车载系统·php·信息与通信·传媒
薛定e的猫咪2 天前
从 DSM 到多智能体仿真:复杂产品变更传播研究路线图
开发语言·人工智能·笔记·学习·php