前述のように config.cgi の場合、継承関係は次のようになっています。
FML::CGI::Menu FML::Process::CGI::Kernel FML::Process::CGI::Param以下では、config.cgi の処理をみてみましょう。
config.cgi のプロセスオブジェクト $curproc は FML::Process::CGI::Kernel クラスです。 FML::Process::CGI::Kernel では
new() prepare() verify_request() run() finish()が順に呼ばれます。
重要なのは run() です。run() は
$curproc->html_start(); (FML::CGI::Menu) $curproc->_drive_cgi_by_table(); (FML::Process::CGI::Kernel) $curproc->html_end(); (FML::CGI::Menu)を実行します。 CGI の画面を作る実体は _drive_cgi_by_table() メソッドです。 このメソッド内から呼ばれる関数が CGI のメイン部分です。
$curproc->_drive_cgi_by_table() メソッドは、 以下の各「run_いろいろ()」メソッド群を呼び出します。
たとえば、コマンドを実行するメイン部分が run_cgi_main です。 これは、 cgi_execute_command (FML::Process::CGI::Kernel) を呼び出し、 FML::Command 経由で「FML::Command::Admin::コマンド」クラスを実行します。 これが、GUI からコマンドを実行するコードの本体です。
画面の表示をする際には、 別のメソッド群が呼ばれています。
たとえば GUI から「ユーザのメールアドレスを登録する」場合、 run_cgi_menu() が入力画面の生成をおこないます。 run_cgi_menu() は cgi_execute_cgi_menu() 経由で、 各コマンドクラスの 「FML::Command::Admin::コマンド::cgi_menu()」を実行しています。 この場合 FML::Command::Admin::subscribe::cgi_menu() メソッドを呼び出しています。
ちなみに、実際の登録作業をする run_cgi_main() は、 FML::Command::Admin::subscribe::process() メソッドを呼び出しています。
他にも run_cgi_* 関数がありますが、 これらは画面の作りに関係する補助的な関数と言ってよいでしょう。
次の2つのメソッドは、たいていデフォルトの関数を呼び出しています。
run_cgi_title FML::Process::CGI::Kernel クラス (タイトル表示) run_cgi_options FML::Process::CGI::Kernel クラス (言語選択画面)また、 この .cgi 固有の画面作り関連メソッド群として次のものがあります。
run_cgi_navigator FML::CGI::Menu クラス run_cgi_help FML::CGI::Menu クラス run_cgi_command_help FML::CGI::Menu クラス run_cgi_menu FML::CGI::Menu クラスヘルプなどはコマンドごとに違うわけですから、当たり前ですね? もっとも、 これらは、 メッセージなどが異なるだけで、 モジュールが違っても、 ほぼ似たようなつくりになっています。
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >