---------------------------------------------------------------------------------------------------------
使用CI以來最強烈的感受是其徹底的MVC設計, 舉個例子 : 在application/modesl目錄里, 寫我們的模型操作, 統一繼承CI_Model.
而在控制器里只寫邏輯, 無法直接操作數據庫, 需要數據直接調用模型, 最后是調用模板.
下面分別展示模型, 控制器, 和視圖間的協作.
/** * 用戶模型, 完整CURD示例 * @Chenwei */class User_model extends CI_model{ public function __construct() { parent::__constrcut(); } /** * 查詢用戶信息, 這里不建議使用單一id參數作為條件, 為了便于控制器自己組裝條件復用此模型方法 * @param array 格式如: $where = array('id'=>1); * @return array */ public function userInfo($where = array()) { if($where && is_array($where)) { $res = $this->db->select('id, username, age')->where($where)->get('users'); return $res->result_array(); //以二維數組形式返回結果 } else { $res = $this->db->select('id, username, age')->get('users'); return $res->result_array(); } } /** * 添加用戶 * @param array 格式如: $data = array('username'=>'Chenwei', 'age'=>'18'); * @reteurn bool */ public function userAdd($data) { if($data && is_array($data)) { $bool = $this->db->insert('users', $data); return $bool; } else { return false; } } /** * 刪除用戶 * @param int $id * @reteurn bool */ public function userDel($id) { if($id) { $where = array('id'=>$id); $bool = $this->db->where($where)->delete('users'); return $bool; } else { return false; } } /** * 修改用戶 * @param array $where 條件 * @param array $data 新數據 * @reteurn bool */ public function userEdit($where, $data) { if($where && is_array($where)) { $bool = $this->db->where($where)->update('users', $data); return $bool; } else { return false; } }}/** * 幾點注意: * 1. 模型類名字User_model首字母大寫, 其余字母小寫, 繼承基礎模型類CI_Model * 2. 類文件名 application/models/user_model.php * 3. 控制器中如何載入此模型 : $this->load->model('User_model', 'user'); 這是以user為對象名引入; $this->load->model('User_model'); 這是默認以User_model為對象名引入. 模型文件支持子目錄; 如果類文件在application/models/blog/user_model.php中, 可以這樣引入: $this->load->model('blog/User_model'); * 4. 如果有需要, 你可以設置自動加載, 在 application/config/autoload.php文件中.* 5. 如果沒有設置自動連接數據庫, 加在模型的時候可以設置連接, 像這樣 $this->load->model('User_model', '', TRUE); * <Farwish.com> */Ps:這里是一個聯合查詢的例子, 有需要可以嘗試:$res = $this->db->select('p.id, p.uid, p.order_no, p.amount, p.pay_way, p.pay_type, p.pay_bank, p.pay_time, p.goods_type, p.contact_tel, p.detail_desc, p.add_time, u.username')->from('payment as p')->join('users as u', 'p.uid = u.id')->order_by('p.id', 'desc')->get();/** * 用戶控制器, CURD示例 * @Chenwei */class Users extends CI_Controller{ public function __construct() { parent::__construct(); $this->load->model('User_model', 'user'); } /** * 用戶列表 */ public function index() { $data['user_list'] = $this->user->userInfo(); $this->load->view('user_list', $data); //調用模板, 并將數據輸出到前臺 } /** * 添加用戶 */ public function user_add() { $data = array( 'username'=>$this->input->post('name'); 'age'=>intval($this->input->post('age')); ); $bool = $this->user->userAdd($data); if($bool) { $this->show_t/** * 視圖層 示例 * @Chenwei */<?php $this->load->view('header');?><!-- 簡單的輸出 --><div> <table> <?php if($user_list):?> <?php foreach($user_list as $v):?> <tr><td><?=$v['username'];?></td></tr> <?php endforeach;?> <?php endif;?> </table></div><?php $this->load->view('header');?>/** * 幾點注意: * 1. 模板中可以直接使用控制器中分配的變量, 使用CI系統的所有函數和方法. * 2. 開啟CI短標簽支持后, 即使php未開啟支持, CI也會幫我們自動解析, 可以放心使用. */可能存在手誤, 以上Code不要直接復制使用; 更多CI的實用用法, 可以隨時去查閱CI手冊.
Link: http://m.survivalescaperooms.com/farwish/p/3991419.html
@黑眼詩人 <www.Farwish.com>
新聞熱點
疑難解答