如何整理一個規模龐大的 Slim Framework 應用程式

Slim 微型框架是一個微型框架,開發人員能迅速撰寫 RESTful 網路應用程式與 API。我強調「微型」,因為 Slim 就是如此 — 一個輕量化且靈活的 PHP 框架,用於建置更小型網站應用程式與 API。不像 CodeIgniter 和 Symfony(分別是由 EllisLab 和 Sensio Labs 所建置的優秀框架),Slim 則拋棄了控制器和抽象元件,以求簡潔和易於使用。

你可以使用單一檔案建置一個 Slim Framework 網路應用程式。然而,專案的範圍和規模會隨著時間而擴大;因此,更好的組織就顯得十分必要。Slim 沒有使用控制器來整理應用程式的方法或路由;控制器已超乎 Slim 的考量範圍。話雖如此,整理規模較大的 Slim Framework 應用程式仍是可行的。以下是我整理自己 Slim Framework 應用程式的方式。

檔案系統佈局

這是用於我自己的 Slim Framework 應用程式的目錄結構

public_html/
    .htaccess
    index.php
    styles/
    images/
    scripts/
app/
    routes/
        session.php
        member.php
        admin.php
vendor/
lib/
data/
public_html/
包含 Slim Framework 的 .htaccess 和 index.php 檔案。index.php 檔案是你初始化並執行 Slim Framework 應用程式的地方。在這一個目錄中也有公開資源(樣式表、圖片和指令碼)。
app/
包含應用程式的程式碼,不應在公開的文件根目錄中使用。
vendor/
包含協力廠商的程式庫,例如 Twig 或 Smarty。
lib/
包含應用程式所使用的我自己的自訂程式庫。
data/
包含應用程式的資料庫綱要和(如果需要的話)SQLite 資料庫。

將路線整理成個別檔案

一個 Slim Framework 應用程式範例可能包含管理員控制面板、供會員專用的頁面和公開頁面(例如登入、登出和註冊)。如上方的檔案系統佈局所示,我將相關的路線分開整理成個別檔案。管理員路線會進入 app/routes/admin.php。會員路線會進入 app/routes/member.php。工作階段管理路線(例如登入、登出、註冊)會進入 app/routes/session.php。這些個別的路線檔案會由 public_html/index.php 以類似的方式強制執行

$app = new Slim();
require '../app/routes/session.php';
require '../app/routes/member.php';
require '../app/routes/admin.php';
$app->run();

我們不會只有一支非常龐大的 index.php 檔案,而是有幾個規模較小的檔案能讓建置一個更大型的 Slim Framework 應用程式變得更容易。