首先我們必須知道CodeIgniter是什麼?
CodeIgniter是一個應用程序框架,是一個爲用PHP編寫網絡應用程序提供的工具包
CodeIgniter使用嚴格的M-V-C模型,這樣可以更好地使表現層和邏輯層分離。
CodeIgniter生成乾淨的URL
CodeIgniter URL 在默認情況下,CodeIgniter中的URL被設計成對搜索引擎和人類友好,不同於使用標準“查詢字符串”方法的是,CodeIgniter使用基於段的方法:
example.com/news/article/my_article
example.com/class/function/ID
第一段表示的控制器類
第二段表示調用類中的函數或者方法
第三以及更多的字段表示的是傳遞給控制器的參數,如ID或者其他各種變量。
刪除index.php文件
默認情況下,index.php 文件將被包含在你的URL種:
example.com/index.php/class/function/ID
可以通過.htaccess文件來設置一些簡單的規則來刪除它,使用“negative”方法將非指定內容進行重定向:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
什麼是控制器
簡而言之,一個控制器就是一個類文件,是以一種能夠和URL關聯在一起的方式來命名的。
example.com/index.php/blog/
這個例子中CodeIgniter加載是一個名爲blog.php 的控制器。
<?php
Class Blog extends CI_Controller{
Function__construct(){
Parent::__construct();
}
Function index(){
Echo“Hello world”;
}
}
?>
把以上代碼寫到blog.php中,放入application/controllers/文件夾下,現在使用類似這樣的URL訪問你的站點
Example.com/index.php/blog/ 你就會看到Helloworld
注意:類名首字母必須大寫
上例中用到的方法名是index()。如果URL的第二部分爲空的話,會默認載入”index”方法,也可以將地址寫成這樣來訪問。
定義默認控制器
當你的網站沒有設置URI或者直接從更目錄訪問的時候,Codeigniter會加載默認的控制器,打開application/config/routes.php 文件來設置默認控制器
$router[‘default_controller’]=’Blog’;
視圖
首先創建一個視圖,在application/views/文件夾下建立一個blogview.php的文件。
<html>
<head>
<title>My Blog</title>
</head>
<body>
<h1>Welcome to my blog</h1>
</body>
</html>
然後是加載視圖
在blog.php控制器中的方法中用一下方法進行加載視圖
$this->load->view(‘blogview’);
可以加載多個視圖,並且可以傳遞一些動態數據
例如一下代碼,在blog.php控制器中
function show() {
$data['title']="My Real Title";
$data['heading']="My Real Heading";
$this->load->view('blogview',$data);
}
在view中就可以這樣去使用
<html>
<head>
<title><?php echo$title;?></title>
</head>
<body>
<h1><?php echo$heading?></h1>
</body>
</html>
循環輸出數據大代碼:
<ul>
<?php foreach($todo_list as $item):?>
<li><?php echo$item;?></li>
<?php endforeach;?>
</ul>
什麼是模型?
模型是專門用來和數據庫打交道的php類,例如,假設想做一個Blog,你可以寫一個模型類,裏面包含插入、更新、刪除blog數據的方法。
下面寫一個簡單的例子
在數據庫中建立一個表,表名位user
字段 |
備註 |
Id |
編號,主鍵自動增長 |
Username |
姓名 varchar |
Phone |
電話 varchar |
在models中建立一個名字爲user.php的模型類。下面是具體代碼
<?php
Class User extends CI_Model{
Function__construct(){
Parent::__construct();
}
}
?>
注意model類必須繼承超級model類CI_Model
下面是數據庫的配置:在application/config/database.php下修改代碼如下
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '******';
$db['default']['database'] = 'dbname';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
在控制器中加載這個配置以及model類,在controllers下定義控制器類user.php
<?php
ClassUser extends CI_Controller{
Function __construct(){
Parent::__construct();
}
Function add(){
$this->load->database();//加載數據庫配置
$this->load->model(‘user’);//加載模型類,其實就是再製定要對哪個表進行操作
$data = array(‘username’=>’zhangsan’,’phone’=>’123456789’);
$this->db->insert(‘user’,$data);//快速插入數據的操作
}
}
?>
輔助函數是幫助我們完成特定任務的函數,每個輔助函數文件僅僅是一些函數的集合。CodeIgniter默認沒有載入輔助函數文件。所以如果想使用輔助函數,就必須先載入它,一旦載入,輔助函數將全局可用,可以在controller和views中使用它們,輔助函數文件,一般保存在system/helpers或者application/helpers文件夾中,CodeIgniter將會先在application/helpers下尋找對應的輔助函數文件,如果該目錄不存在或者目錄下沒有對應的輔助函數文件,CI纔會載入system/helpers下的輔助函數文件。
載入輔助函數,$this->load->helper(‘name’);例如要載入文件名爲url_helper.php,載入形式如下
$this->load->helper(‘url’);
一次可以載入多個輔助函數,參數要用數組形式
$this->load->helper(array(‘helper1’,’helper2’,……));
使用CodeIgniter類庫
所有的類庫文件存放在system/libraries文件夾。大多數情況下你需要預先在controller中初始化後才能使用它們。
$this->load->library(‘class_name’);
加載類庫時,一次也可以加載多個類庫。
注意:程序員還可以自定義自己的類庫
使用CodeIgniter適配器,適配器是一種特殊的庫,它有一個父類和任意數量的子類,子類可以訪問其父類元素,但不能訪問其兄弟類的元素,在你的控制器中,適配器爲類庫提供了一種優雅的語法,一次類庫會就此獲益甚至會需要分解成離散的類。
適配器的源文件放在system/library目錄下。
基準測試類
CodeIgniter有一個總是有效的基準測試類,能夠用來計算兩個標記點的時間差。
測試基準類可以在控制器,視圖或者模型中使用,用法如下:
標記一個開始點
標記一個結束點
運行elapsed_time函數顯示結果
$this->benchmark->mark('code_start');
// Some code happens here
$this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');