沉冰浮水

沉冰浮水

做最终到的事,成为最终成为的人!
github
bilibili
mastodon
zhihu
douban

「水坑」Z-BlogPHP 接口本質之「PHP 可變函數」

#

嚴格來說,全部接口都是「監聽」,監聽接口本身被觸發,然後執行指定的操作,或者對接口傳遞的數據進行處理。

上邊是寫在 Z-BlogPHP 文件裡關於插件接口部分的總結:Z-BlogPHP 官方文件

更進一步,接口機制本質上是 PHP 中「可變函數」的一種應用,將「指定的操作」定義為函數,然後以「可變函數」的方式來調用;

然後 PHP 還有一個「可變變量」的概念,則是 Z-BlogPHP 模板機制的基礎;

「水坑」Z-BlogPHP 模板機制講解「簡易版」_電腦網絡_沉冰浮水:

https://www.wdssmq.com/post/20201026266.html

對這些基礎性質進行封裝使用才構成了 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 的附圖 - 沉冰浮水的動態:

https://t.bilibili.com/708592243066273862

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。