DeerOJ的前端框架介紹-libs資料夾和controller資料夾

山城甘草發表於2024-05-30

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語句,來應對一些特殊網頁的生成。

相關文章