一#
厳密に言えば、すべてのインターフェースは「リスナー」であり、インターフェース自体がトリガーされ、指定された操作が実行されるか、またはインターフェースに渡されたデータが処理されます。
上記は、Z-BlogPHP ドキュメントのプラグインインターフェースの部分に書かれている要約です:Z-BlogPHP 公式ドキュメント;
さらに、インターフェースメカニズムは、本質的には PHP の「可変関数」の一種の応用であり、指定された操作を関数として定義し、それを「可変関数」として呼び出す方法です;
そして、PHP には「可変変数」という概念もあり、それが Z-BlogPHP のテンプレートメカニズムの基礎です;
「水坑」Z-BlogPHP テンプレートメカニズムの解説「簡易版」_コンピューターネットワーク_沈氷浮水:
これらの基本的な性質をカプセル化して使用することで、Z-BlogPHP や他の PHP プログラムが構築されます。そのため、必要なのは Z-BlogPHP のドキュメントではなく、PHP のドキュメントを見ることです。
二#
「可変関数」に関するデモコード;
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に関する図は以下のBilibiliのリンクにあります;
// -----------
// 4. 可変関数を使用する方法
$func = "fn$func";
$func();
三#
PHP: 可変関数 - Manual:
https://www.php.net/manual/ja/functions.variable-functions.php
PHP: 可変変数 - Manual:
https://www.php.net/manual/ja/language.variables.variable.php
copilot に関する図 - 沈氷浮水の動画: