最近再做一个有关于考试系统的项目,是检验一个自己的php基础,属于一个比较简单的项目吧,但是却遇到了诸多困难呀!
废话不多说,直接上干货:什么是PHP匿名函数? 看官方解释: 匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。
下面是一个匿名函数的实例:
<?php header("content-type:text/html;charset=utf-8"); //下面我们写一个匿名函数 $func=function($data){ for($i=0;$i<$data;$i++){ echo $i."<br/>"; } }; //调用匿名函数 $func(100); ?>结果是从0到$data-1
闭包函数也可以作为变量的值来使用。PHP 会自动把此种表达式转换成内置类 Closure 的对象实例。把一个 closure 对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后也要加上分号:
use: use子句 让匿名函数使用其作用域的变量
下面是几个小例子,帮助我们去理解:
function test() { $param2 = 'every'; // 返回一个匿名函数 return function ($param1) use ($param2) { // use子句 让匿名函数使用其作用域的变量 $param2 .= 'one'; print $param1 . ' ' . $param2; }; } $anonymous_func = test(); $anonymous_func('hello'); function test() { $param2 = 'everyone'; $func = function ($param1) use ($param2) { // use子句 让匿名函数使用其父作用域的变量 print $param1 . ' ' . $param2; }; $param2 = 'everybody'; return $func; } $anonymous_func = test(); $anonymous_func('hello'); function test() { $param2 = 'everyone'; $func = function ($param1) use (&$param2) { // use子句 让匿名函数使用其父作用域的变量 print $param1 . ' ' . $param2; }; $param2 = 'everybody'; return $func; } $anonymous_func = test(); $anonymous_func('hello'); 自己动手写一下,注意观察运行结果哦