CGI プロセスの内部構造
メソッド
FML::CGI のクラスは以下の3つのメソッドを実装して下さい。
html_start()
run_cgi()
html_end()
ここで
html_start() は、
ようするに HTML の先頭部分、たとえば DOCTYPE から BODY あたりを、
html_end() は
/BODY と /HTML を表示する部分をカスタマイズするために用います。
run_cgi() メソッドでは BODY の部分を表示してください。
$curproc の run() メソッドは
html_start()
run_cgi()
html_end()
を順番に実行しています。
つまり CGI プロセスの実行のフロー( FML::Process::Flow 参照)は
new()
prepare()
verify_request()
run()
html_start()
run_cgi()
html_end()
finish()
ということになります。
画面の作りとメソッド
典型的な画面は次のように分割されると考えて良いでしょう。
ヘッダ
バー1 メニュー バー2
フッタ
なお、バー1と2の部分は navigation などと呼ばれます。
ヘッダ部分( HTTP ヘッダではなく、HTML の DOCTYPE から BODY あたり)
やフッタの部分は
html_start() および html_end() で HTML コードを生成するでしょう。
BODY の中身は
バー1 メニュー バー2
の部分で、run_cgi() によって生成します。
TODO:
run_cgi() の中身をもっと細かくすることと、
画面上のどの部分をどのメソッドが記述するのかを指定できる
アクセスメソッドが必要です。
また BODY の中身も、これにあわせて、より細かく
nw north ne
west center east
sw south se
くらいの精度がないといけないかも知れません。
画面とトランポリン機構
CGI の表示部分は
FML::Command::
以下のクラスに移動させます。
しかしながら、
FML::Command::
の中に実体があるとは限らず
object composition の形式で
FML::CGI:: クラスが提供するメニュー生成クラスを
使うことになるでしょう。
たとえば subscribe の場合
FML::CGI::Admin::Main →
FML::Command::Admin::subscribe →
FML::CGI::Admin::Menu →
メニューの表示
などとなるでしょう。
このように Mach のトランポリン機構のように、いったりきたりします。