PHP闭包函数(匿名函数)

3347 0
目录

PHP闭包函数(匿名函数)


到了现在你还不会或者没听说过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"


上一篇:SQLMAP详解
下一篇:教书先生Curl
一个立志成为大佬的白
最新回复 ( 0 )
  • 暂无评论