回呼函數將一個函數作為參數傳遞到呼叫的函數中。如果在函數的格式說明中出現 callback 類型的參數,則該函數就是回呼函數。 雖然可以使用變數函數去宣告自己的回呼函數,但最多的還是透過 call_user_func_array() 函數去實作。上一章節介紹了php回呼函數中的變數函數宣告和應用,使用變數函數將一個使用者自訂的執行過程傳遞到函數中使用,大大增加了使用者對函數功能的擴展,把一段自己定義的功能傳到函數內部使用。本節就實例說明下 call_user_func_array()函數。
函數call_user_func_array() 是PHP 中的內建函數,其實它也是回呼函數,其格式說明如下:
mixed call_user_func_array( callback function, array param_arr)
這個函數有兩個參數:第一個參數因為使用偽類型callback, 所以這個參數需要一個字串,表示要呼叫的函數名;第二個參數則是陣列類型的參數,表示參數列表,依照順訊一次會傳遞給要呼叫的函數。宣告一個函數,功能是輸出,目的是作為函數的回呼函數。
該函數的應用實例如下所示:
<?php // 声明一个函数fun(),功能是输出两个字符串,目的是作为call_user_func_array()函数的回调函数 function fun($str1, $str2){ echo "$str1 = ".$str1; echo "<br>"; echo "$str2 = ".$str2; } //通过系统函数call_user_func_array()调用函数fun() call_user_func_array("fun",array("php.cn","php中文网")); ?>
#在在上面的實例中,透過系統函數call_user_func_array () 呼叫自己定義的函數fun(),將函數fun() 的名稱字串傳遞給了call_user_func_array() 函數中的第一個參數,第二個參數則需要的是一個數組,數組中的元素個數必須和 fun()函數的參數列表和樹相同。因為這個陣列參數中的每個元素值都會經過 call_user_func_array() 函數 ,依照順序依序傳遞給回調到的函數 fun()參數清單中。所以我們可以將前面透過變數函數實現的自訂回呼函數,改成借助 call_user_func_array() 函數的方式實作。
其程式碼的範例如下:
<?php //声明回调函数filter, 在0-10的整数中通过自定义条件过滤不要的数字 function filter($fun){ for($i=0; $i<=10; $i++){ //使用系统函数call_user_func_array(),调用和变量$fun值相同的函数 if(call_user_func_array($fun,array($i))) continue; echo $i.'<br>'; } } ?>
在本例中,自訂的函數 filter()內部,將原先的變數函數位置改寫成藉助call_user_func_array() 函數的呼叫方式,而函數 filter()的應用方式則沒有改變。
這一章講解了php回呼函數的call_user_func_array()函數及其用法,下一章我們將介紹php回呼函數的類別靜態函數和物件的方法回呼。
【相關教學推薦】
3. php實戰影片教學
########以上是php函數之回呼函數(二) call_user_func_array() 函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

負載均衡會影響會話管理,但可以通過會話複製、會話粘性和集中式會話存儲解決。 1.會話複製在服務器間複製會話數據。 2.會話粘性將用戶請求定向到同一服務器。 3.集中式會話存儲使用獨立服務器如Redis存儲會話數據,確保數據共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

本文比較了PHP和ASP.NET,重點是它們對大規模Web應用程序,性能差異和安全功能的適用性。兩者對於大型項目都是可行的,但是PHP是開源和無關的,而ASP.NET,


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。