CodeIgniter架構學習隨筆,codeigniter隨筆
-----------------------------------------------------------------------------------------------
Codeigniter架構
-----------------------------------------------------------------------------------------------
講師:鄒義良
微博:weibo.com/it266
-----------------------------------------------------------------------------------------------
主要內容
CI簡介
深入MVC設計模式
CI中的控制器與視圖
CI中的超級對象
資料庫訪問
AR模型
-----------------------------------------------------------------------------------------------
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.推薦使用
超級對象
當前的控制器對象
提供了很多屬性:
$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();
http://www.bkjia.com/PHPjc/1033981.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1033981.htmlTechArticleCodeIgniter架構學習隨筆,codeigniter隨筆 ----------------------------------------------------------------------------------------------- Codeigniter架構 ----------------...