程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> [CI]CodeIgniter快速開發指南,cicodeigniter

[CI]CodeIgniter快速開發指南,cicodeigniter

編輯:關於PHP編程

[CI]CodeIgniter快速開發指南,cicodeigniter


---------------------------------------------------------------------------------------------------------

使用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); */

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_tips('操作成功 !');
        }
        else
        {
            $this->show_tips('操作失敗 !');
        }
    }

    /**
     * 修改用戶
     */
    public function user_edit()
    {
        $id = $this->input->post('id');

        $data = array(
            'username'=>$this->input->post('name');
            'age'=>intval($this->input->post('age'));
        );

        if($id)
        {
       $where = array('id'=>$id);
$bool = $this->user->userEdit($where, $data); if($bool) { $this->show_tips('操作成功 !'); } else { $this->show_tips('操作失敗 !'); } } else { $this->show_tips('非法操作 !'); } } /** * 刪除用戶 */ public function user_del() { $id = $this->input->post('id'); $bool = $this->user->userDel($id); if($bool) { $this->show_tips('操作成功 !'); } else { $this->show_tips('操作失敗 !'); } } } /**
 * 幾點注意: * 1. 控制器文件在 application/controller/users.php , 支持子目錄 * 2. 控制器名首字母必須大寫, 且必須繼承CI_Controller * 3. 前後台權限控制都在application/core/MY_Controller.php文件中,
    定義兩個控制器, 分別用於前台和後台, 繼承CI_Controller , 其余都只需繼承這兩個自定義的控制器即可. * 4. 定義默認控制器, 在 application/config/route.php */

 

/**
 * 視圖層 示例
 * @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://www.cnblogs.com/farwish/p/3991419.html

@黑眼詩人 <www.chenwei.ws>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved