最新回复 (
0 )
-
暂无评论
到了现在你还不会或者没听说过PHP的闭包函数吗?
你真的Out了呀,今天我就为大家带来这个函数的详解!
<?php
$a = function () {
echo 'this is a testA';
};
function testa($a)
{
var_dump($a);
}
testa($a); //object(Closure)#1 (0) { }
来看这一段代码,发现我们直接给$a赋值了一个函数,函数内部进行了一个输出操作。
这就是一个简单地闭包函数,我们可以通过testa()来调试时输出一下$a()。
它自动将$a的内容转换为了Closure类的实例。
那我们闭包函数的传参该怎么写呢? 其实它和普通的函数传参是一样的写法。
请看如下实例:
<?php
$a = function ($name) {
echo 'this is a '. $name;
};
$a('testa');
当我们在闭包函数内试图调用全局变量时会报错,那么如果需要一个全局变量来参与,该怎么写呢?
Use关键字为我们提供了这种可能,我们可以直接Use需要的变量。
<?php
$str = 'this is a ';
$a = function ($name) use ($str) {
echo $str . $name;
};
$a('testa');// this is a testa
<?php
//定义一个测试字符串
$testDumpStr = 'Test Successful';
//定义一个普通的函数
function closure()
{
global $testDumpStr;
var_dump($testDumpStr);
}
//定义一个测试闭包函数
$closure1 = function () use ($testDumpStr) {
var_dump($testDumpStr);
};
//定义一个测试闭包函数
$closure2 = function () {
global $testDumpStr;
var_dump($testDumpStr);
};
closure(); //string(15) "Test Successful"
$closure1(); //string(15) "Test Successful"
$closure2(); //string(15) "Test Successful"
暂无评论