從網上弄了一張框架學習思惟導圖,從圖中就能夠看出ci用了設計模式中的MVC架構,使得用起來很簡單方便 php
用了大概兩個星期開發了一個《文章管理系統》以爲開發過程當中學到了不少,挺不錯的,並且在學習過程當中, mysql
不斷進取,不斷學習是前進的動力。 sql
如今大概講下ci的理解: 數據庫
ci包括models controllers views ,下載ci框架包後須要的就是aplication systerm(ci框架包) index.php總入口。 設計模式
數據庫訪問 數組
1. 修改配置文件: 安全
Application-àconfig à database.php 架構
注意:若是同時有多個數據庫時可將defalut 那塊代碼複製一遍 app
2. 在控制器中裝載數據庫操做類 $this->load->database() (是能夠指點函數的當有多個數據庫)後 框架自動加載數據庫操做類驅動(app/config/autoload.php)到超級對象屬性db中 框架
設置自動加載數據庫操做類: applicationàconfig->autoload.php
3. 數據獲取
$reslut=$this->db->query(); //結果是一個對象database文件夾下全部類的對象
$result->result();//一個一個的數組對象 相似 mysql_fetch_object();
$result->result_array();//返回二維數組裏面是關聯數組
$result->row();//取第一條數據是對象
$result->row_array();//返回數組
4. 數據添加
$result=$this->db->query();//同mysql操做函數同樣 返回值是布爾
$this->insert_id();//返回增長的主鍵id
$this->affeched_rows();//受影響的記錄條數
安全提高:
第一步:設定表前綴 application->config->database.php能夠用一個常量來替換全部的表前綴 配置成相同的方便之後項目的維護修改
第二步:綁定數據
例如將insert中 字段值列表用 ?代替 執行sql時將須要添加的數據封裝到索引數組中
AR模型
1.開啓AR模型後可使用 model類中一系列的方法
若是是從新解壓CI框架文件 須要:
1. 設置數據庫操做函數:application/config/database.php 進行設置
2開啓對數據庫的自動加載 :application /config/autoload.php $autoload['libraries'] = array('database');
2. 若是肯定使用AR模型的話必須肯定在數據操做類(database)的配置文件中肯定 支持AR模型: app/config/database.php $active_record = TRUE;
3. 設置表前綴
Application/config/database.php 設置了表前綴後會自動加載前綴
4. 加載AR模型後可使用mysql_result數據處理
增長數據:
$this->db->insert(‘表名’,關聯數組);// 返回值爲布爾;
刪除數據:
$this->db->delete(‘表名’,條件關聯數組);
修改數據:
$this->db->update(‘表名’,修改值得關聯數組,條件的關聯數組);
查詢數據:
$result=$this->db->get(‘表名’);//等同於tp中的select()返回值是資源
$result->result();
查詢數據的連環操做:
方式一:
$this->db->select(‘name,password’)//字段列表 不是tp中的select()方法
->from(‘表名’)//不加表前綴
->where(‘id >=’,3)//條件列表
->limit(2,3); //ci中limit方法中 開始位置和取值長度與sql相反
->order_by(‘tiaojian’);//
->get();
方式二:
$this->db->where(‘id =’,1)->get(‘表名’)
$this->db->where(array(‘id’=>1,’name !=’=>’臭妮’))->get(‘表名’)
查看上一條sql:echo last_query();
注意:若是是複雜的查詢採用
$this->db->query($sql,$data);
5. AR模型之控制器的擴展:
Application/core下新建擴展的控制器文件
Class MY_Controller extends CI_Controller{
Public function __construct(){
Parent::__constuct();
//登錄 權限的驗證
}
注:CI中 控制器的前綴的能夠進行修改 application /config文件中能夠進行修改
CI框架能夠自動實例化一些對象,而且把它放在超級對象的屬性中
超級對象的屬性:
CI裝載器($this->loader)能夠當作 $Object=new CI_loader();$this->load=$Object;能夠裝載的操做有:
view() 裝載視圖 也可用來裝載文件
vars() 裝載分配的變量
database()裝載數據庫操做對象
model() 裝載模型對象
helper()裝載輔助函數
路由解析($this->uri) 能夠當作 $Object=new CI_URI(); $this->uri=$Object;
ci框架的路由是分段截取的 參數爲1-開始位置 入口文件.php/值1/值2/ (與tp框架不一樣的是ci框架路由僅有值無名)
CI框架的路由參數獲取方式
方法一:
segment() 特色:很便捷可是路由參數的順序變得很重要
方法二:
public function index($a,$b) 經過參數來獲取路由的參數 特色:必需要有默認值參數順序一樣很重要
客戶端信息提取($this->input)
$this->input->post();
$this->input->server();
e.存放的是目錄爲view
f.視圖文件的加載方式:$this->load->view();視圖文件名稱不加後綴亦可寫子目錄
d.視圖文件中混編php代碼
h.變量分配的問題 $this->load->vars('title','這是標題'); 若是多變量分配將經過關聯數組 $array['title'] $date['list']=$list 視圖頁 echo $title
d.網站開發規範 應將頭尾等公共部分分別放在文件中方便加載
控制器:
a.保證控制器類名稱與控制器類文件名稱同樣(且文件名稱大小問題由於人們輸入習慣而變成了小寫)無後綴 類名.php
b.全部的控制器直接或間接繼承CI_Controller類
c.方法屬性爲 public時可被訪問
d.控制器的對象:超級對象($this 當前類的當前對象) 可在控制器的任意方法中打印超級對象