跳轉到內容

理解諾亞的分類/讓我們探索gorumMain

來自華夏公益教科書,開放的書籍,為開放的世界
function gorumMain(&$s)
{
    global $gorumroll,$lll,$whatHappened,$infoText,$gorumcontent;
    global $initClassName,$navBarText;
    global $upperTemplate,$lowerTemplate;    
    global $globHtmlHead, $HTTP_GET_VARS;

這包括所有必需的全域性變數。像這樣的全域性變數不需要定義,你可以直接包含和使用它們。就像你不需要定義作用域變數一樣。

    $s="";
    $init = new $initClassName;
    $init->initializeSystemSettings();    
    $base = new $gorumroll->class;
    $olc=$gorumroll->list."_".$gorumroll->method."_lllcancel";
    if (isset($lll[$olc])) {$lll["cancel"]=$lll[$olc];}

似乎主程式的下一步是做出布林決策。它確定先前的建立/更新/編輯/刪除是否讓使用者點選了取消。然後它會分成兩種情況

    if( $gorumroll->submit==$lll["cancel"] )
    {
        $whatHappened="form_submitted";
        $infoText = $lll["operation_cancelled"];
        // html template file meghatarozasa a teljes oldal layoutjahoz
        // (ELD stilusu template-ezes, ha van ilyen) kitalalja, hogy mi 
        // lesz a template file, amit a showApp hasznal:
        $init->getTemplate();
        goBackward($base);

諾亞的奇妙之處在於它內建的向後導航,就像這裡看到的那樣。如果你取消,它會把你送回你來自的地方。

        $init->getTemplateAfter();
        processMethod($base, $processResult);
    }
    else
    {
        $whatHappened="";
        processMethod($base, $processResult);
        // html template file meghatarozasa a teljes oldal layoutjahoz
        // (ELD stilusu template-ezes, ha van ilyen) kitalalja, hogy mi 
        // lesz a template file, amit a showApp hasznal:
        $init->getTemplate();
        if( $whatHappened ) // Ez jelzi, hogy meg egy processMethod kell
        {
            goBackward($base);
            $init->getTemplateAfter();
            processMethod($base, $processResult);
        }
    }

現在下一步與頭、頂和頁尾模板有關

    if (ereg("\.php$",$upperTemplate)) {//just check
        $ret=@fopen($upperTemplate,"r");
        if (!$ret) {
            $infoText = sprintf($lll["incl_header_err"],$upperTemplate);
        }
        @fclose($f);
    }
    if (ereg("\.php$",$lowerTemplate)) {//just check
        $ret=@fopen($lowerTemplate,"r");
        if (!$ret) {
            if (!isset($infoText)) $infoText="";
            $infoText.="
".sprintf($lll["incl_footer_err"],$lowerTemplate); } @fclose($f); }

這裡出現了真正有趣的渲染內容。showNavBar 繪製了這些文字,比如提交新增等。

    //show functions
    $gorumcontent="";
    $navBarText=$base->showNavBar();//TODO: a navbar altalanos cucc?
    $gorumcontent.= $processResult;
    
    $globHtmlHead=$init->showHtmlHead();

這連結了標頭檔案^^

    if( isset($HTTP_GET_VARS["inf"]) ) $infoText=$HTTP_GET_VARS["inf"];
    $sApp=$init->showApp();

這裡就是諾亞實際工作的執行點,它會沿著層次結構向下執行,執行正確的類。渲染你的詳細資訊/列表或其他

    $s.=$globHtmlHead;//fontos, hogy felulirhato legyen az app-ban

現在它獲取了上部和下部模板

    $upperTemplate=trim($upperTemplate);
    if (ereg("\.php$",$upperTemplate)) 
	{
        $ret=@include($upperTemplate);
    }
    else $s.="$upperTemplate\n";
    $lowerTemplate=trim($lowerTemplate);

最後,它將你的應用程式的輸出新增到最終的文字中。

    $s.=$sApp;
    if (ereg("\.php$",$lowerTemplate)) $ret=@include($lowerTemplate);
    else $s.="$lowerTemplate\n";

}

processMethod($base, $processResult); 很特別,因為它似乎與資料的處理有關。在諾亞中,他們將資料從檢視中抽象出來(一件非常好的事情)

華夏公益教科書