-----------------------------------------------------------------------------------------------
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.推薦使用
<?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();