ThinkPHP 擴展庫內建 Dir.class.php 提供目錄掃描與刪除功能。本文實戰示範如何用它優化部落格系統的快取清除功能,實現按類型精準刪除(而非粗暴刪除整個 Runtime 目錄)。
Dir.class.php 核心方法
| 方法 | 用途 |
Dir::isEmpty($path) | 靜態方法,檢測目錄是否為空 |
Dir::del($path) | 靜態方法,遞歸刪除目錄或檔案 |
實戰場景:WBlog 快取清除控制器
<?php
public function del() {
$type = trim($_GET['type']);
if (empty($type)) $this->error('請選擇快取類型!');
switch ($type) {
case 1: $path = WEB_PATH.'Runtime'; break; // 全部清空
case 2: $path = WEB_PATH.'Runtime/Temp'; break; // 檔案快取
case 3: $path = WEB_PATH.'Runtime/Data/_fields'; break; // 資料快取
case 4: $path = WEB_PATH.'Runtime/Cache'; break; // 模板快取
case 5: $path = APP_PATH.'Runtime'; break; // 後台全部
case 6: $path = APP_PATH.'Runtime/Temp'; break; // 後台檔案快取
case 7: $path = APP_PATH.'Runtime/Data/_fields'; break; // 後台資料快取
case 8: $path = APP_PATH.'Runtime/Cache'; break; // 後台模板快取
}
import("@.ORG.Dir"); // 載入 Dir.class.php(放置於後台專案 ORG 目錄)
if (!Dir::isEmpty($path)) {
Dir::del($path);
$this->success('清除成功!');
} else {
$this->error('已清空!');
}
}
?>
關鍵點解析
- 靜態呼叫:
Dir::isEmpty()、Dir::del() 無需實例化,直接使用
- 路徑常數:
WEB_PATH(前台專案根目錄)、APP_PATH(後台專案根目錄)
- 分類清除:依功能區分 Temp、Data、Cache 三大快取類型,前後台獨立管理
進階應用建議
- 搭配前端 AJAX 呼叫,提供「一鍵清除」按鈕與進度提示
- 記錄清除操作日誌(操作人、時間、類型),便於追蹤問題
- 若專案未內建
Dir.class.php,可從其他 ThinkPHP 版本複製至 Extend/Org/Dir.class.php
- 上一篇文章: PHP 產生 SHTML 靜態頁面類別實作
- 下一篇文章: PHP AdodbZip 類別:自動下載、解壓、載入 ADODB 資料庫庫
Copyright ©
程式碼之家 All Rights Reserved