Blogger Information
Blog 49
fans 1
comment 0
visits 44859
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
匿名函数、闭包和回调参数的理解。2019年6月12日20点
Nick的博客
Original
816 people have browsed it

匿名函数:没有函数名称的函数。可以用于赋值给变量,也可以作为函数或者方法的回调使用。匿名函数可以穿参。


闭包:PHP中闭包和匿名函数是一个概念,用于赋值给变量的一个匿名函数,要给闭包传参必须在匿名函数后加上use(),

括号内可以添加变量,如果需要闭包内外部的变量同步,需要在传参变量前加上  &  符。


回调参数:函数中使用方法callback(),函数外部用call_user_func()或call_user_func_array()等方法进行回调并赋值给函数中的参数,括号内第一个参数应为方法名'callback'。


匿名函数举例:(最终网页中会看到输出:hello world)

实例

<?php
//匿名函数举例
//将匿名函数用于赋值给变量
 $func = function($param){
        echo($param);
 };
 
 //给变量中的匿名函数传参
$func('hello world');

运行实例 »

点击 "运行实例" 按钮查看在线实例



闭包举例:

实例

//闭包举例
$name = 'world';

$sayHello = function() use($name){
    echo("Hello $name");
};//这里不要忘记结束的;号

//必须函数方式调用,即用(), 输出Hello world
$sayHello();

echo '<br>';
//尝试在闭包外部更新闭包内参数的值
$name = 'zj';
//输出 Hello world,结果证实闭包外部不能更改内部参数的值
$sayHello();

echo '<hr>';

//当在use参数的变量前加上&,就可以在闭包外部访问和更改内部参数的值
$name = 'world';

$sayHello = function() use(&$name){
    echo("Hello $name");
};//这里不要忘记结束的;号

//必须函数方式调用,即用(), 输出Hello world
$sayHello();

echo '<br>';
//尝试在闭包外部更新闭包内参数的值
$name = 'zj';
//输出 Hello zj,结果证实闭包外部可以更改内部参数的值
$sayHello();

运行实例 »

点击 "运行实例" 按钮查看在线实例



回调参数举例:

实例

//函数回调
function callback($a, $b)
{
    echo "$a<=>$b.<br/>";
}

$func = 'callback';
call_user_func($func, 1, 2);
call_user_func_array($func, array(2, 1));
//结果返回
//1<=>2.
//2<=>1.

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!