system/ 框架核心(不可修改)
core/ 核心類:Controller、Model、Router、Loader...
libraries/ 通用類庫:Pagination、Upload、Session...
helpers/ 輔助函數:url_helper、captcha_helper...
database/ DB 驅動與 Active Record
language/ 語言包
application/ 項目代碼(開發重點)
config/ 配置:config.php、database.php、routes.php、autoload.php
controllers/ 控制器
models/ 模型
views/ 視圖
core/ 擴展核心類(MY_Controller 等)
libraries/ 項目類庫
helpers/ 項目輔助函數
hooks/ 鉤子擴展
third_party/ 第三方庫
logs/ 日誌
cache/ 緩存
index.php/控制器/方法/參數1/參數2...
// 新建控制器 application/controllers/Hello.php
class Hello extends CI_Controller {
public function sayHello($name) {
echo $name . ", Hello World";
}
}
// 訪問:index.php/hello/sayHello/Jack
注意:下劃線開頭方法不可直接訪問;僅 public 方法可訪問;避免與類名同名(會被當作構造函數)。
// 單視圖
$this->load->view('view_test');
// 多視圖組合(自動拼接輸出)
$this->load->vars('title', 'value'); // 單個變量
$data = ['new_title' => '標題', 'list' => $list];
$this->load->vars($data); // 批量變量
$this->load->view('view_test');
$this->load->view('footer');
public function getUri($id, $name, $year) {
echo $this->uri->segment(3); // 獲取第 3 段:id
echo $this->uri->segment(4); // name
}
application/config/database.php 設置連接參數,注意 dbprefix 與 swap_pre 保持一致。
// 自動加載:application/config/autoload.php
$autoload['libraries'] = ['database'];
// 模型中使用(必須繼承 CI_Model 並調用 parent::__construct())
$this->load->database();
// 原生查詢
$res = $this->db->query($sql);
$res->result(); // 對象數組
$res->result_array(); // 關聯數組
$res->row(); // 第一行對象
// Active Record(需 database.php 中 $active_record = TRUE)
// 查詢
$this->db->get('table');
// 插入
$this->db->insert('table', ['name'=>'lisi', 'password'=>md5('lisi')]);
// 更新
$this->db->update('table', ['name'=>'wangwu'], ['id'=>3]);
// 刪除
$this->db->delete('table', ['id'=>2]);
CI 3.x 版本已將 Active Record 重命名為 Query Builder,語法兼容但建議使用新版文檔規範寫法。