一#
嚴格來說,全部接口都是「監聽」,監聽接口本身被觸發,然後執行指定的操作,或者對接口傳遞的數據進行處理。
上邊是寫在 Z-BlogPHP 文件裡關於插件接口部分的總結:Z-BlogPHP 官方文件;
更進一步,接口機制本質上是 PHP 中「可變函數」的一種應用,將「指定的操作」定義為函數,然後以「可變函數」的方式來調用;
然後 PHP 還有一個「可變變量」的概念,則是 Z-BlogPHP 模板機制的基礎;
「水坑」Z-BlogPHP 模板機制講解「簡易版」_電腦網絡_沉冰浮水:
對這些基礎性質進行封裝使用才構成了 Z-BlogPHP 或者其他的 PHP 程序,所以很多時候你需要的是看 PHP 的文件,而不是嫌 Z-BlogPHP 的文件不夠詳細;
二#
關於「可變函數」的示意代碼;
function fnTest1()
{
# code...
}
function fnTest2()
{
# code...
}
function fnTest3()
{
# code...
}
// 根據 $func 的值來調用不同的函數
$func = "Test1";
// -----------
// 1. 普通的 if else 判斷
if ($func === "Test1") {
fnTest1();
} elseif ($func === "Test2") {
fnTest2();
} elseif ($func === "Test3") {
fnTest3();
}
// -----------
// 2. 使用 switch case
switch ($func) {
case 'Test1':
fnTest1();
break;
case 'Test2':
fnTest2();
break;
case 'Test3':
fnTest3();
break;
default:
# code...
break;
}
// -----------
// 3. 使用 call_user_func
call_user_func("fn$func");
// call_user_func 我沒怎麼用過,但是字面上還是好理解的;
// 因為 AI 提示才寫在這裡的,不過 AI 還告訴我有個 call_user_func_array,就需要再查下怎麼用和有啥用了;
// 然後關於 copilot 有張附圖可以見下邊 B 站動態鏈接裡;
// -----------
// 4. 使用可變函數
$func = "fn$func";
$func();
三#
PHP: 可變函數 - Manual:
https://www.php.net/manual/zh/functions.variable-functions.php
PHP: 可變變量 - Manual:
https://www.php.net/manual/zh/language.variables.variable.php
關於 copilot 的附圖 - 沉冰浮水的動態: