php匿名函数的使用技巧的总结(附代码)

来源:不言 发布时间:2018-11-21 10:51:53 阅读量:616

本篇文章给大家带来的内容是关于php匿名函数的使用技巧的总结(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

php中的匿名函数 也叫闭包函数 允许指定一个没有名称的函数。把匿名函数赋值给变量,通过变量来调用,举个简单的例子:

1

2

3

4

5

<?php

$anonymousFunc = function($username){

    echo $username;

  };

  $anonymousFunc("乔峰!");

技巧1: 将匿名函数放在普通函数中,也可以将匿名函数返回,:这样就构成了一个简单的闭包

1

2

3

4

5

6

7

8

<?php

function closureFunc(){

    $anonymousFunc = function(){

        echo "乔峰!";

    };

    $anonymousFunc();//普通函数内部调用了匿名函数

}

closureFunc();//输出: 乔峰

技巧2 在匿名函数中引用局部变量(这里要引用一个php的关键字 use)

1

2

3

4

5

6

7

8

9

<?php

function closureFunc(){

    $username = '乔峰';

    $anonymousFunc = function() use($username){

        echo $username;

    };

    $anonymousFunc();//此处调用了匿名函数

}

closureFunc();//输出: 乔峰

技巧3 在普通函数中返回匿名函数

1

2

3

4

5

6

7

8

9

10

<?php

function closureFunc(){

    $username = '乔峰';

    $anonymousFunc = function() use($username){

        echo $username;

    };

    return $anonymousFunc;// 函数返回匿名函数

}

$func = closureFunc();

$func(); //然后调用$func()

技巧4 返回匿名函数并给匿名函数传参

1

2

3

4

5

6

7

8

9

10

<?php

function closureFunc(){

    $username = '乔峰';

    $anonymousFunc = function($lover,$skill) use($username){

        echo $username.$lover.$skill;

    };

    return $anonymousFunc;

}

$func = closureFunc();

$func("阿朱","擒龙手");//乔峰阿朱擒龙手

技巧5 使用闭包改变上下文引用的变量值

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

 

function closureFunc(){

    $number = 100;

    $anonymousFunc = function() use($number) {

        $number++;

        echo $number.PHP_EOL;

    };

    echo $number.PHP_EOL;

    return $anonymousFunc;

}

$func = closureFunc();// 这里输出1,直接调用本函数的 echo $number.PHP_EOL; 即为100

$func();// 调用函数的返回值 $anonymousFunc  $number++ 即为101

$func(); //101

$func();//101

上面的输入结果,发现后面的两个func()均返回 101,值并未发生改变,如果要累积++效果, 只要加一个 & 引用符号就可以了(匿名函数内的修改也会影响外部变量),修改下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

 

function closureFunc(){

    $number = 100;

    $anonymousFunc = function() use(&$number) {

        $number++;

        echo $number.PHP_EOL;

    };

    echo $number.PHP_EOL;

    return $anonymousFunc;

}

$func = closureFunc();// 这里输出1,直接调用本函数的 echo $number.PHP_EOL; 即为100

$func();// 调用函数的返回值 $anonymousFunc  $number++ 即为101

$func(); //102

$func();//103

技巧6 把匿名函数当作参数传递

1

2

3

4

5

6

7

8

<?php

//定义普通函数,anonymousFunc 为参数变量

function myFunc($anonymousFunc){

    $anonymousFunc("乔峰");

}

myFunc(function($username){ //这里调用普通函数,并把 匿名函数作为参数 传给了myFunc中的$anonymousFunc

    echo $username;

});//输出 乔峰


标签: PHP
分享:
评论:
你还没有登录,请先