批改状态:合格
老师批语:
所谓回调函数,就是一个被作为参数传递的函数,php回调函数是指在主线程执行的过程中,突然跳去执行设置的回调函数,回调函数执行结束后,在回到主线程处理下面的流程。
<?php
//声明一个匿名函数 里面有$a,$b两个形参
$func = function($a,$b)
{
//返回$a+$b
return $a+$b;
//匿名函数后面别忘了;
};
//声明一个函数test,里面两个形参,Closure代表匿名函数类,callback的中文意思回调函数,这里的$callback是个形参,代表了那个函数,这俩在一块应该是代表回调一个匿名函数类,作用是可以回调一个匿名函数
function test(Closure $callback)
{
//定义两个局部变量$a,$b
$a = 10;
$b = 20;
//输出把两个值赋给回调函数后的结果
echo $callback($a,$b);
}
//调用test函数并将$func这个匿名函数作为实参传入
test($func);点击 "运行实例" 按钮查看在线实例
所谓递归函数,就函数自身调用自身,但是这里需要在函数开始调用之前做判断,否则会陷入死循环,以清理缓存目录为例(注意清理缓存目录的文件,一定不要跟缓存目录在一起,否则会把清理文件也处理掉,且最开始的父级目录在文件被清除后将无法执行清楚命令):
<?php
//定义一个清空缓存的函数
function del($dir)
{
//判断当前文件夹是否是一个正确的文件夹(即判断是否是一个合法的目录)
if(is_dir($dir))
{
//定义一个初始值,默认未被删除
$flag = false;
//opendir()成功返回resource,失败返回false,上面判断是一个合法目录,这里打开目录流并赋值给一个变量,方便后面关闭
if($handle = opendir($dir))
{
//开始循环读取opendir返回的resource,readdir()从目录句柄中读取条目,成功则返回下一个文件的文件名。文件名以在文件系统中的排序返回。失败返回false
//判断不为false时进入循环
while(($file = readdir($handle))!==false)
{
// echo "$file<hr>";//输出的时候除了文件跟文件夹的列表,还能看到.跟..,一个点代表存在同级目录,两个点代表存在上级目录
if($file!='.'&&$file!='..')
{
//这里可能又有文件夹,判断当前文件夹是否是一个正确的文件夹,这里跟最开始的路径拼接
if(is_dir($dir.'\\'.$file))
{
//调用本函数,递归处理文件夹(处理目录)
del($dir.'\\'.$file);
}else{
//处理文件 这里还是$dir.'\\'.$file,这里判断了他非目录 那他就是一个文件,文件就用unlink()函数直接删除
unlink($dir.'\\'.$file);
}
}
}
}
//关闭目录句柄
closedir($handle);
//目录只有为空才能被程序删除 rmdir()删除空文件夹
if(rmdir($dir))
{
//处理后将最开始定义的初始值赋值为true,代表已经删除
$flag = true;
}
}
}
//当前路径,建议使用绝对路径,我这边是使用__DIR__魔术常量定位到当前的绝对路径,然后往上找到同级的0807文件夹下,调用的0807文件夹
$path = __DIR__.'\\..\\0807';
//调用函数之前可以先看看路径是否正确
echo $path;
//执行函数
del($path);
?>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号