PHP匿名函数(Anonymous functions),又称为闭包(Closure)
简介在学习Laravel核心代码的时候,在容器注册的过程中,看到了Closure。平时在使用PHP的过程中,自己使用闭包还是比较少的,所以本文将介绍下PHP的闭包Closure。
PHP的闭包(Closure),其实也叫匿名函数。可以参考PHP的官方文档:http://www.php.net/manual/zh/functions.anonymous.php 匿名函数就是创建一个没有名称的函数,主要作为回调函数来进行使用。匿名函数目前是通过 Closure 类来实现的,需要学习Closure类的请前往:http://php.net/manual/zh/class.closure.php。
基本使用
1、闭包函数作为变量的值
//定义一个匿名函数,作为一个变量的值
$func = function () {
return 'Hello World';
};
//PHP 会自动把此种表达式转换成内置类 Closure 的对象实例
var_dump($func instanceof Closure);//结果输出:true,说明匿名函数目前是通过Closure 类来实现的
echo $func();//结果为 Hello world
2、闭包函数也可传递参数
//定义一个含有参数的匿名函数
$func = function ($string) {
return $string;
};
echo $func('Hello');//结果为:Hello
echo $func('World');//结果为:World
3、闭包函数可以从作用域中继承变量,但是必须使用use语言结构传递进去
$param = 'hello';
//在使用$param的时候,前面必须先定义该变量,否则会提示:Undefined variable: param
$func = function () use ($param) {
return $param;
};
echo $func();//输出hello
//这里改变param的值
$param = 'world';
echo $func();//输出hello,说明param值的改变不会对闭包函数中的值进行修改,如果需要对其进行修改,就需要传递引用
$param = 'Hello';
$func1 = function () use(&$param){
return $param;
};
echo $func1();//输出Hello
$param = "World";
echo $func1();//输出World
4、回调函数
//定义一个接收参数为闭包函数的方法
function testCallBack(Closure $callback)
{
return $callback();
}
$func = function () {
return 'Hello World';
};
//传递定义好闭包函数的变量进去
echo testCallBack($func);//输出:Hello World
//直接传递闭包进去
echo testCallBack(function (){
return 'Closure';
});//输出:Closure
在Golang编程中,经常会用到MongoDB数据库进行查询,但是当日期是一个字符串的时候,如何根据日期进行分组查询呢?本文将记录如何分组查询统计。
“冰墩墩(英文:Bing Dwen Dwen,汉语拼音:bīng dūn dūn),是2022年北京冬季奥运会的吉祥物。将熊猫形象与富有超能量的冰晶外壳相结合,头部外壳造型取自冰雪运动头盔,装饰彩色光环,整体形象酷似航天员。那么本文就用python写一个冰墩墩。
CA(Certification Authority)证书,指的是权威机构给我们颁发的证书。
在使用Docker的过程中,如果我们需要自己来定制镜像那么就会用到Dockerfile。本文主要是记录Dockerfile的说明和相关指令。
在做搜索列表分页的时候,需要分页后的页面跳转的url地址中包含搜索的参数,在Laravel中的如何处理呢?
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题