ThinkPHP 預設生成的目錄結構層級較深,對習慣扁平化結構(如 DedeCMS)的開發者不夠直觀。本文示範如何透過自訂入口檔案,重新定義專案目錄常數,達到簡化結構的目的——無需修改框架核心原始碼。
index.php<?php
$root = dirname(__FILE__);
$root = str_replace('\\', '/', $root);
// 核心路徑常數重新定義
define('__ROOT__', $root); // 網站根目錄
define('LIB_PATH', __ROOT__ . '/libs/'); // 類庫目錄
define('CONF_PATH', __ROOT__ . '/config/'); // 設定檔目錄
define('LANG_PATH', __ROOT__ . '/lang/'); // 語言包目錄
define('TMPL_PATH', __ROOT__ . '/templates/');// 模板目錄
define('HTML_PATH', __ROOT__ . '/a/'); // 靜態快取目錄
define('RUNTIME_PATH', __ROOT__ . '/cache/'); // 執行期快取根目錄
// 子快取目錄
define('LOG_PATH', RUNTIME_PATH . '/log/');
define('TEMP_PATH', RUNTIME_PATH . '/temp/');
define('DATA_PATH', RUNTIME_PATH . '/data/');
define('CACHE_PATH', RUNTIME_PATH . '/cache/');
define('APP_DEBUG', true); // 開啟除錯模式
// 載入框架核心
require_once 'core/ThinkPHP.php';

ThinkPHP 重命名為 core,放在網站根目錄。libs、config、templates 等)直接置於根目錄,層級扁平。cache/ 管理。| 優點 | 缺點/注意事項 |
|---|---|
| 結構直觀,符合直覺 | 需手動建立所有目錄並設定寫入權限 |
| 不修改框架核心,升級相容性佳 | 團隊協作需約定統一結構規範 |
| 部署遷移方便(整個根目錄即專案) | 部分擴展套件可能預設路徑需調整 |
提醒:初學者建議先熟悉預設結構運作機制,再嘗試自訂,避免路徑解析錯誤難以排查。