跳转到内容

理解诺亚的分类/让我们探索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); 很特别,因为它似乎与数据的处理有关。在诺亚中,他们将数据从视图中抽象出来(一件非常好的事情)

华夏公益教科书