首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ThinkPHP 框架為什麼 .html 文件能解析 PHP 代碼?模板引擎原理解析

     編輯:程式設計綜合問答

現象

ThinkPHP 專案中,.html 後綴的模板文件內寫 <?php ... ?> 可直接執行,而原生 PHP 需 .php 後綴。

核心原理:模板引擎編譯

  1. 模板文件非直接執行:.html 是模板源文件,不經過 PHP 引擎直接解析。
  2. 編譯階段:ThinkPHP 讀取模板文件,將標籤({$var}, {volist}...)及內嵌 PHP 代碼**編譯生成純 PHP 文件**存入緩存目錄(runtime/temp/)。
  3. 執行階段:請求到達時,載入緩存的編譯後 PHP 文件執行,輸出 HTML 響應。

流程圖解

請求 → 路由分發 → 控制器邏輯 → 獲取模板路徑
                              ↓
                    模板引擎編譯器
                              ↓
                    生成編譯緩存 PHP 文件
                              ↓
                    include 執行緩存文件
                              ↓
                    輸出響應

關鍵配置


// config/template.php
return [
    'view_suffix' => 'html',   // 模板後綴,可改為 tpl、htm 等
    'view_depr'   => DS,       // 模板目錄分隔符
    'tpl_cache'   => true,     // 是否開啟緩存
];

為什麼這樣設計?

  • 關注點分離:前端開發者只需編寫 HTML + 簡單標籤,無需懂 PHP。
  • 安全可控:模板沙箱限制可用 PHP 函數,防止業務邏輯滲透視圖層。
  • 性能優化:編譯緩存避免重複解析,生產環境建議開啟緩存。

開發者須知

  1. 模板中盡量使用框架標籤({$var}, {if}),減少原生 PHP,利於維護。
  2. 修改模板後若未生效,請清理 runtime/temp/ 緩存目錄。
  3. 生產環境部署時預編譯模板:php think optimize:schema / php think view:build。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved