CodeIgniter框架學習要點

如下內容從兄弟連的CI教學視頻中摘抄:php

http://codeigniter.org.cn/tutorials/sql

 

-----------------------------------------------------------------------------------------------數據庫

 

Codeigniter框架設計模式

 

-----------------------------------------------------------------------------------------------數組

 

                                                                            講師:鄒義良瀏覽器

                                                                    微博:weibo.com/it266app

 

-----------------------------------------------------------------------------------------------框架

主要內容ide

 

    CI簡介函數

 

    深刻MVC設計模式

 

    CI中的控制器與視圖

 

    CI中的超級對象

 

    數據庫訪問

 

    AR模型

 

    如何擴展CI的控制器

 

    模型


    url相關函數


    設置路由


    分頁


    文件上傳


    Session


    驗證碼


    表單驗證

 

 

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

CI是什麼?

    CodeIgniter是一個輕量級但功能強大的PHP框架

    基於MVC設計模式,提供了一套豐富的類庫

    簡單易學,高效實用

 

官方網站

    www.codeigniter.com

 

中文網站

    http://codeigniter.org.cn

 

下載當前最新版本

    CodeIgniter_2.1.4.zip

    (截止2015.7.1最新版爲3.0.0——筆者注)

 

有什麼特色?

    你想要一個小巧的框架

    你須要出色的性能

    你須要普遍兼容標準主機上的各類 PHP 版本和配置

        CI 2.1.4 須要PHP5.1.6

    你想要一個幾乎只需 0 配置的框架

    你想要一個不需使用任何命令符的框架

    你想要一個不需堅守限制性編碼規則的框架

    你不但願被迫學習一門模板語言(雖然能夠選擇你喜歡的模板解析器)

    你不喜歡複雜,熱愛簡單

    你須要清晰,完整的文檔

 

目錄結構說明

    license.txt  許可協議

    user_guide  用戶手冊

    syste  框架核心文件

    application  應用目錄

    index.php  入口文件

 

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

MVC

 

 

    1.入口文件

        惟一一個讓瀏覽器直接請求的腳本文件

    2.控制器

        協調模型和視圖

    3.模型

        提供數據,保存數據

    4.視圖

        只負責顯示

        表單...

    5.動做action

        是控制器中的方法,用於被瀏覽器請求

 

 

CI中的MVC

 

    訪問url使用的是pathinfo

    入口文件.php/控制器/動做

    application目錄中:

        controllers 控制器

        models  模型

        views  視圖

    默認控制器是welcome

    默認動做是index

 

 

控制器

 

    1.不須要加後綴

    2.文件名所有小寫    例如  user.php

    3.全部的控制器,直接或間接繼承自CI_Controller類

    4.控制器中,對動做(方法)要求:

        public

        不能以_開頭

 

 

視圖

 

    1.在控制器中若是加載視圖

        //直接寫視圖名字,不寫擴展名,若是有子目錄,則寫上目錄名

    2.視圖中,直接使用原生PHP代碼

    3.推薦使用

        <?php foreach($list as $item);?>

        <?=$item['name']?>

        <?php endforeach;?>

 

 

超級對象

 

    當前的控制器對象

    提供了不少屬性:

 

    $this->load

        裝載器類的實例 system/core/loader.php

        裝載器類提供的方法:

        view()    裝載視圖

        vars()    分配變量到視圖

        database() 裝載數據庫操做對象

        model()   裝載模型對象

        helper()

 

    $this->uri

        是CI_URI類的實例 system/core/URI.php

        CI_URI類提供的方法:

        segment()用於獲取uri中的參數

 

        傳統的:入口文件.php/控制器/動做/參數1/值1/參數2/值2

        入口文件.php/控制器/動做/值1/值2

 

        echo $this->segment(3);//值1

        echo $this->segment(4);//值2

 

        //index.php/控制器/index/6

        public function index($p=0){    echo $p;//輸出6

        }

 

    $this->input

        輸入類

        是CI_URI類的實例 system/core/input.php

        CI_URI類提供的方法:

        $this->input->post('username');  //等價於$_POST['username'];

        $this->input->server('DOCUMENT_ROOT'); //等價於$_SERVER['DOCUMENT_ROOT'];        

        $this->input->server('REMOTE_ADDR');

   在視圖中,直接用$this來訪問超級對象中的屬性

 

 

數據庫訪問

 

    修改配置文件

    application/config/database.php

    將數據庫訪問對象 裝載到超級對象的屬性中 $this->db

    $this->load->query($sql);//返回對象

 

    $res=$this->db->query($sql);//返回對象

    $res->result();//返回數組,數組中是一個一個的對象

    $res->result_array();//返回二維數組,裏面是關聯數組

    $res->row()//返回第一條數據,直接是一個對象


    參數綁定
    $sql="select * from blog_user where name=?";
    $this->db->query($sql,$name);//若是有多個問號時,須要傳入一個索引數組

    表前綴
    $db['default']['dbprefix'] = 'new_';
    $db['default']['swap_pre'] = 'swap_';


    配置爲同樣,代碼中,直接硬編碼表前綴就好了,若是之後項目數據庫表前綴發生變化,
    只須要修改$db['default']['dbprefix'] = 'new_';代碼中的swap_會自動替換爲new_

    db的自動加載
    application\config\autoload.php
    $autoload['libraries'] = array(database);
    不須要:$this->load->database();

 

    取自增id

    $this->db->insert_id();

    受影響行數

    $this->db->affected_rows();

 

Active record

 

    1.application/config/database.php

        確保$active_record = TRUE;

    2.application/config/autoload.php

        $autoload['libraries'] = array(database);

    3.在配置文件中,正確配置表前綴後,會自動添加

 

    $res->$this->db->get('表名');//返回結果集對象

    $res->result();

 

    $bool=$this->db->insert('表名',關聯數組);

 

    $bool=$this->db->update('表名',關聯數組,WHERE條件);

 

    $bool=$this->db->delete('表名',WHERE條件);

 

    //select uid,username from user where uid>=3 order by uid desc limit 2,3

    $res=$this->db->select('uid,username')

        ->from('user')

        ->where('uid >=',1)

        ->limit(3,2)//跳過2條,取出3條數據

        ->order_by('uid desc')

        ->get();

 

    //顯示最進一條sql語句

    echo $this->db->last_query();

 

    //where

    //$res=$this->db->where('username','marry')->get('user');

    //$res=$this->db->where('username !=','marry')->get('user');

    //$res=$this->db->where('username','marry')->get('user');

    $res=$this->db->where(array('username'=>'hanyile','uid <'=>3))->get('user');

    echo $this->db->last_query();

 

    複雜的查詢請用$this->db->query($sql,$data);//使用問號綁定查詢

 

擴展CI控制器

    application/core/MY_Controller.php

    控制器就能夠繼承自MY_Controller

 

    application/config/config.php

    $config['subclass_prefix'] = 'MY_';

 

模型

    在模型中,能夠直接使用超級對象中的屬性

相關文章
相關標籤/搜索