$this->load->library() 是 CodeIgniter 載入類別庫 (Libraries) 的核心方法,掌握其完整參數與行為,能靈活管理依賴、避免命名衝突、實現條件式載入。本文系統整理官方文件未盡詳述的進階用法。
$this->load->library($library, $params = NULL, $object_name = NULL);
| 參數 | 型別 | 說明 |
|---|---|---|
| $library | string | 類別名稱 (不含副檔名),大小寫不敏感,會自動對應 application/libraries/ 下同名檔案 (首字大寫)。 |
| $params | array | 建構子參數陣列,將以 new Library($params) 傳入。 |
| $object_name | string | 自訂物件屬性名稱,預設為類別名稱小寫 (如 Email → $this->email)。 |
Myclass.php → class Myclass (首字大寫)。application/libraries/ (專案專用) 或 system/libraries/ (核心擴展)。$this->load->library('folder/Myclass') 對應 libraries/folder/Myclass.php。$config = [
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.gmail.com',
'smtp_port' => 465,
'smtp_user' => 'user@gmail.com',
'smtp_pass' => 'app_password',
'charset' => 'utf-8',
'mailtype' => 'html',
];
$this->load->library('email', $config);
$this->load->library('session', '', 'my_session');
// 使用:$this->my_session->set_userdata('key', 'val');
$this->load->library('payment/Alipay'); // libraries/payment/Alipay.php
if ($this->input->post('need_pdf')) {
$this->load->library('Pdf'); // 僅在需要時載入
}
$autoload['libraries'] = ['database', 'session', 'email', 'Myauth'];
注意: 自動載入無法傳遞 $params、$object_name;需參數時請在 Controller 建構子手動載入。
libraries/。class Xxx 或命名空間錯誤 (CI 3 不支援 NS)。$object_name 但使用預設名稱,或拼字錯誤。new Library()。CI_Library (可選) 以取得 $this->ci =& get_instance() 存取 CI 超級物件。public function __construct(array $config = [])。config/xxx.php,Library 內 $this->ci->config->load('xxx') 讀取,減少 Controller 參數傳遞。Myauth、PdfGenerator、ApiClient (PascalCase),避免與核心庫衝突。