如何整理一個規模龐大的 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 應用程式變得更容易。