| 分類 | 套件 | 功能 | 現代替代 |
| 資料庫 | DB | 統一抽象層,支援 10+ 驅動 | PDO, Doctrine DBAL |
| 資料庫 | MDB2 | DB 進階版,預處理、事務、反向工程 | Doctrine DBAL |
| HTML | HTML_QuickForm2 | 表單建構、驗證、渲染 | Symfony Form, Laravel Collective |
| HTML | HTML_Template_IT | 模板引擎 (區塊巢狀、變數替換) | Twig, Blade |
| 快取 | Cache_Lite | 檔案/記憶體/資料庫快取、標籤失效 | Symfony Cache, Stash |
| XML | XML_Parser | SAX 風格解析器 | XMLReader, SimpleXML |
| XML | XML_RPC | XML-RPC 客戶端/伺服端 | phpxmlrpc, gRPC |
| 郵件 | Mail, Mail_Mime | SMTP/Sendmail 發信、MIME 多部件 | Symfony Mailer, PHPMailer |
| 日誌 | Log | 多驅動 (檔案、資料庫、Syslog、MCAL) | Monolog |
| 工具 | Console_Getopt | CLI 參數解析 | Symfony Console |
| 工具 | File_Find | 遞歸檔案搜尋、正則過濾 | Symfony Finder |
| 工具 | Benchmark_Timer | 程式碼區塊/函數執行計時 | Xdebug, Blackfire |
PEAR_Error 進階用法
class MyPackage extends PEAR {
public function doSomething() {
if ($fail) {
// 回傳錯誤物件,不拋例外 (PHP 4 風格)
return $this->raiseError(
'Database connection failed', // 訊息
500, // 代碼
PEAR_ERROR_CALLBACK, // 模式: 回調
'myErrorHandler', // 回調函數
['host'=>'db', 'user'=>'app'] // 額外資料
);
}
return true;
}
}
function myErrorHandler($err) {
error_log("[MyPackage] {$err->getMessage()} (Code: {$err->getCode()})");
// 可發送郵件、寫入監控系統
}
$result = $pkg->doSomething();
if (PEAR::isError($result)) {
// 錯誤已由回調處理,這裡可決定是否繼續
}
遷移到 Composer 的對照表
| PEAR 動作 | Composer 對應 |
| `pear install Net_SMTP` | `composer require pear/net_smtp` |
| `require_once 'Net/SMTP.php'` | `require 'vendor/autoload.php'; use Net_SMTP;` |
| `PEAR::isError($obj)` | `$obj instanceof \PEAR_Error` 或改用 `try/catch` |
| `$this->raiseError()` | `throw new \Exception()` |
| `package.xml` | `composer.json` |
總結
PEAR 是 PHP 早期標準化的里程碑,雖已由 Composer 取代,但其**編碼規範、套件分類思想、錯誤處理模式**深刻影響現代 PHP 生態。維護舊專案時理解 PEAR 機制仍不可或缺。
- 上一篇文章: PEAR 入門指南:標準化 PHP 代碼、復用套件、框架基類 (PEAR.php、PEAR_Error)
- 下一篇文章: PEAR Cache_Lite 實戰教學:頁面片段快取、標籤群組失效、生命周期控制
Copyright ©
程式碼之家 All Rights Reserved