ThinkPHP 3.x 定義大量常量供框架內部與應用開發使用,分為不變的預定義常量、可覆蓋的路徑常量、隨環境變化的系統常量。本文整理完整速查表,方便開發時快速查閱。
一、預定義常量(框架核心,不可變)
| 常量 | 值 | 說明 |
| URL_COMMON | 0 | 普通模式 URL |
| URL_PATHINFO | 1 | PATHINFO 模式 URL |
| URL_REWRITE | 2 | REWRITE 模式 URL |
| URL_COMPAT | 3 | 兼容模式 URL |
| HAS_ONE | 1 | 關聯:一對一 |
| BELONGS_TO | 2 | 關聯:屬於 |
| HAS_MANY | 3 | 關聯:一對多 |
| MANY_TO_MANY | 4 | 關聯:多對多 |
| THINK_VERSION | 版本號 | 框架版本字串 |
二、路徑常量(目錄結構,可重新定義覆蓋)
| 常量 | 預設值 | 說明 |
| CORE_PATH | THINK_PATH . 'Lib/' | 系統核心類庫 |
| EXTEND_PATH | THINK_PATH . 'Extend/' | 系統擴展目錄 |
| MODE_PATH | EXTEND_PATH . 'Mode/' | 模式擴展目錄 |
| ENGINE_PATH | EXTEND_PATH . 'Engine/' | 引擎擴展目錄 |
| VENDOR_PATH | EXTEND_PATH . 'Vendor/' | 第三方類庫目錄 |
| LIBRARY_PATH | EXTEND_PATH . 'Library/' | 系統擴展類庫 |
| COMMON_PATH | APP_PATH . 'Common/' | 項目公共目錄 |
| LIB_PATH | APP_PATH . 'Lib/' | 項目類庫目錄 |
| RUNTIME_PATH | APP_PATH . 'Runtime/' | 項目運行時目錄 |
| CONF_PATH | APP_PATH . 'Conf/' | 項目配置目錄 |
| LOG_PATH | RUNTIME_PATH . 'Logs/' | 項目日誌目錄 |
| CACHE_PATH | RUNTIME_PATH . 'Cache/' | 模板快取目錄 |
| LANG_PATH | APP_PATH . 'Lang/' | 語言包目錄 |
| TEMP_PATH | RUNTIME_PATH . 'Temp/' | 項目臨時目錄 |
| DATA_PATH | RUNTIME_PATH . 'Data/' | 項目資料目錄 |
| TMPL_PATH | APP_PATH . 'Tpl/' | 項目模板目錄 |
| HTML_PATH | APP_PATH . 'Html/' | 靜態快取目錄 |
三、系統常量(隨環境/請求動態產生)
| 常量 | 說明 |
| IS_CGI | 是否 CGI 模式 |
| IS_WIN | 是否 Windows 環境 |
| IS_CLI | 是否命令列模式 |
| __ROOT__ | 網站根目錄 URL(不含域名) |
| __APP__ | 當前項目入口文件 URL |
| __GROUP__ | 當前分組 URL |
| __URL__ | 當前模組 URL |
| __ACTION__ | 當前操作 URL |
| __SELF__ | 當前頁面完整 URL |
| __INFO__ | 當前 PATH_INFO 字串 |
| APP_NAME | 當前項目名 |
| GROUP_NAME | 當前分組名 |
| MODULE_NAME | 當前模組名 |
| ACTION_NAME | 當前操作名 |
| APP_DEBUG | 是否開啟調試模式 |
| MODE_NAME | 當前模式名稱 |
| APP_PATH | 當前項目實體路徑 |
| THINK_PATH | 框架核心路徑 |
| MEMORY_LIMIT_ON | 記憶體統計支援 |
| RUNTIME_FILE | 項目編譯快取檔名 |
| THEME_NAME | 當前主題名稱 |
| THEME_PATH | 當前模板主題路徑 |
| APP_TMPL_PATH | 當前模板 URL 路徑 |
| LANG_SET | 瀏覽器語言 |
| MAGIC_QUOTES_GPC | magic_quotes_gpc 狀態 |
四、模板中常用常量輸出範例
<!-- 引入公共 CSS/JS -->
<link href="__PUBLIC__/Css/style.css" rel="stylesheet">
<script src="__PUBLIC__/Js/common.js"></script>
<!-- 表單提交地址 -->
<form action="__URL__/insert" method="post">
<!-- 當前分組連結 -->
<a href="__GROUP__/Index/index">首頁</a>
五、自訂路徑常量最佳實踐
- 在入口文件
index.php 最開頭 define() 覆蓋(需在 ThinkPHP.php 載入前)。
- 僅修改必要常量,避免破壞框架內部相對路徑計算。
- 部署上線前統一檢查
RUNTIME_PATH、LOG_PATH、CACHE_PATH 寫入權限。
小結
熟練掌握 ThinkPHP 常量體系,能在模板、控制器、配置檔中精準引用路徑與環境資訊,避免硬編碼路徑導致的遷移困擾。建議將本表收藏為專案開發速查卡。