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
报错Electron failed to install correctly, please delete node_modules/electron and try installing again处理
有向图根无向图的最大区别在于有向图是具有方向的,所以在实现上也会有很大的不同。
Mysql in 多个字段的用法
Portainer是一款轻量级的图形化管理工具,通过它我们可以轻松管理不同的docker环境。Portainer部署和使用都非常的简单,它由一个可以运行在任何docker引擎上的容器组成。Portainer提供管理docker的containers、images、volumes、networks等等。它兼容独立的docker环境和swarm集群模式。基本满足中小型单位对docker容器的管理工作。
在公司内部多项目并行的时候,每次开启要给项目就需要申请一个域名,并且每个域名就需要支持HTTPS,所以前面我们已经用过Certbot生成证书,那么本文我们主要记录Certbot生成泛域名证书。
快速生成表格
在使用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问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。