libs資料夾
在 index.php
檔案初始化的過程中,需要提前準備好一些類和方法,這些類和方法的初始化是呼叫 libs
資料夾下的大多數 php 檔案來實現的。libs資料夾下的檔案如下:
其中,uoj-lib.php
檔案是進行所有相關初始化的主檔案,上級的 index.php
檔案會直接呼叫該檔案展開初始化的工作。libs
資料夾下的其他檔案和 model
資料夾下的所有類都是透過 uoj-lib.php
檔案來完成初始化工作的。
controller資料夾
該資料夾是用來存放控制器檔案的,也就是構建HTML檔案的主要檔案。controller資料夾下的檔案如下:
其中, judge
資料夾下的檔案負責處理OJ的判題邏輯。比如,評判提交的程式碼是否AC/WA/TLE/MLE等。
這裡以當前資料夾下的 index.php
為例來描述主頁的生成。
生成主頁的 index.php
先給出 index.php
的程式碼:
可以看到從這裡開始php檔案中有 HTML 的語句出現。
事實上,controller資料夾下的每個php都對應著一個網頁的主要內容的生成。觀察 index.php
生成的主頁:
index.php
中的所有 HTML 語言的程式碼都是實現上圖中的第2模組部分。
注意到程式碼:
<?php echoUOJPageHeader(UOJConfig::$data['profile']['oj-name-short']) ?>
此部分透過先前初始化的類和方法呼叫 /app/views/page_header.php
檔案,結合 /app/views/main-nav.php
檔案來生成整個網頁的header部分。
注意到程式碼:
<?php echoUOJPageFooter() ?>
此部分透過先前初始化的類和方法呼叫 /app/views/page_footer.php
檔案來生成整個網頁的footer部分。
在這樣的情況下,可以靈活呼叫這些php語句,來應對一些特殊網頁的生成。