
批改狀態(tài):合格
老師批語:
所謂回調(diào)函數(shù),就是一個(gè)被作為參數(shù)傳遞的函數(shù),php回調(diào)函數(shù)是指在主線程執(zhí)行的過程中,突然跳去執(zhí)行設(shè)置的回調(diào)函數(shù),回調(diào)函數(shù)執(zhí)行結(jié)束后,在回到主線程處理下面的流程。
<?php //聲明一個(gè)匿名函數(shù) 里面有$a,$b兩個(gè)形參 $func = function($a,$b) { //返回$a+$b return $a+$b; //匿名函數(shù)后面別忘了; }; //聲明一個(gè)函數(shù)test,里面兩個(gè)形參,Closure代表匿名函數(shù)類,callback的中文意思回調(diào)函數(shù),這里的$callback是個(gè)形參,代表了那個(gè)函數(shù),這倆在一塊應(yīng)該是代表回調(diào)一個(gè)匿名函數(shù)類,作用是可以回調(diào)一個(gè)匿名函數(shù) function test(Closure $callback) { //定義兩個(gè)局部變量$a,$b $a = 10; $b = 20; //輸出把兩個(gè)值賦給回調(diào)函數(shù)后的結(jié)果 echo $callback($a,$b); } //調(diào)用test函數(shù)并將$func這個(gè)匿名函數(shù)作為實(shí)參傳入 test($func);
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
所謂遞歸函數(shù),就函數(shù)自身調(diào)用自身,但是這里需要在函數(shù)開始調(diào)用之前做判斷,否則會(huì)陷入死循環(huán),以清理緩存目錄為例(注意清理緩存目錄的文件,一定不要跟緩存目錄在一起,否則會(huì)把清理文件也處理掉,且最開始的父級(jí)目錄在文件被清除后將無法執(zhí)行清楚命令):
<?php //定義一個(gè)清空緩存的函數(shù) function del($dir) { //判斷當(dāng)前文件夾是否是一個(gè)正確的文件夾(即判斷是否是一個(gè)合法的目錄) if(is_dir($dir)) { //定義一個(gè)初始值,默認(rèn)未被刪除 $flag = false; //opendir()成功返回resource,失敗返回false,上面判斷是一個(gè)合法目錄,這里打開目錄流并賦值給一個(gè)變量,方便后面關(guān)閉 if($handle = opendir($dir)) { //開始循環(huán)讀取opendir返回的resource,readdir()從目錄句柄中讀取條目,成功則返回下一個(gè)文件的文件名。文件名以在文件系統(tǒng)中的排序返回。失敗返回false //判斷不為false時(shí)進(jìn)入循環(huán) while(($file = readdir($handle))!==false) { // echo "$file<hr>";//輸出的時(shí)候除了文件跟文件夾的列表,還能看到.跟..,一個(gè)點(diǎn)代表存在同級(jí)目錄,兩個(gè)點(diǎn)代表存在上級(jí)目錄 if($file!='.'&&$file!='..') { //這里可能又有文件夾,判斷當(dāng)前文件夾是否是一個(gè)正確的文件夾,這里跟最開始的路徑拼接 if(is_dir($dir.'\\'.$file)) { //調(diào)用本函數(shù),遞歸處理文件夾(處理目錄) del($dir.'\\'.$file); }else{ //處理文件 這里還是$dir.'\\'.$file,這里判斷了他非目錄 那他就是一個(gè)文件,文件就用unlink()函數(shù)直接刪除 unlink($dir.'\\'.$file); } } } } //關(guān)閉目錄句柄 closedir($handle); //目錄只有為空才能被程序刪除 rmdir()刪除空文件夾 if(rmdir($dir)) { //處理后將最開始定義的初始值賦值為true,代表已經(jīng)刪除 $flag = true; } } } //當(dāng)前路徑,建議使用絕對(duì)路徑,我這邊是使用__DIR__魔術(shù)常量定位到當(dāng)前的絕對(duì)路徑,然后往上找到同級(jí)的0807文件夾下,調(diào)用的0807文件夾 $path = __DIR__.'\\..\\0807'; //調(diào)用函數(shù)之前可以先看看路徑是否正確 echo $path; //執(zhí)行函數(shù) del($path); ?>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)