-
CodeIgniter框架
-
-
1、回憶MVC
-
-
1.1、M:模型,提供數據,保存數據
-
1.2、V:視圖,只負責顯示,表單form
-
1.3、C:控制器,協調模型和視圖
-
1.4、action:動作,是控制器中的方法,用於被瀏覽器請求
:動作,是控制器中的方法,用於被瀏覽器請求 -
2、CI、
CI-
、CI中的中的 >MVCCI簡介:CodeIgniter是一個輕量級但功能強大的是一個輕量級但功能強大的php框架,基於MVC的設計模式。提供了一套豐富的類庫
-
-
2.1、訪問的使用的pathinfo
-
2.2、格式:入口檔案/控制器/動作(預設 >pathinfo格式)
-
2.3、application、
- application目錄:
- Controllers
- 控制器Models
-
Models
- Models
- ModelsModels
- ModelsModels
- ModelsModels> >
- Views
-
視圖
2.4-
、預設的控制器是welcome2.5
、預設的動作是-
index2.6、檔名全部小寫
-
33、控制器(
controller-
):
3.1- 、不需要加上後綴,直接是類別名稱
- 、不需要加上後綴,直接是類別名稱.. php3.2、檔名全部小寫,例如
- user.
- user. user. user
- .. php(大寫的檔案名稱瀏覽器不支援)3.3、所有的控制器,直接或間接繼承自 CI_Controller類,類名首字母大寫3.4、方法名不區分大小寫 動作要求:1.必須以public必須以 2.無法下列劃線(_不能以下劃線(_開頭注意!方法名稱與類別名稱相同,會被php當做構造方法(__construct)
- )
-
))
) )-
4、視圖(view) 4.1
、在控制器中載入視圖:-
$this->$this->>load ->view(“user_add”);//不加裝名4.2
- 、在控制器中載入檢視:$this->$this-> load
- ->view(“user/
- user/user/”);//不加副檔名注意:可以多次呼叫$this->
- load->
- view(視圖);4.34.3
- 4.34.34.3 >、視圖中,直接使用原生php程式碼4.4、在控制器中分配變數:
$this-
->load->vars
(“視圖中變量名”(“視圖中變量名” ,- php
中變數名稱);-
-
-
>$str=「abcdefg」;
」;-
$>->load->vars(“str”str”str”str”,$str);
-
視圖使用:php echo $str; ?>
-
4.5、在控制器中分配多個變數: 例如:$str
- abcd」;$list = array= arrayid
”=>”- 1
”,”-
name”name””zhangsan”,”pwd”=>”
1234-
”);” $data[“str”]= $str;$data[“list
”]- =
-
$list;
- $this
->-
load ->vars($data);
-
4.6、CI框架會自行解決php中的短標籤 =…?>
-
4.7、建議使用:php、建議使用:phpphp >foreach(
- $listas $key val):?>…php endforeach;?>
-
5 、超級對象:當前控制器對象,提供了很多屬性
5.1-
、$this->load屬性5.1
-
5.15.15.15.1
-
5.15.111、裝載器類的實例 system/
- core/Loader.php5.1.5.1.
-
、CI_
Loader提供的方法:$this->load->view()裝載視圖裝載視圖裝載視圖裝載視圖裝載視圖裝載視圖裝載視圖裝載檢視this->load->vars()$this->load->data裝載資料庫操作對象$this->load->load->load->load->load- >model()裝載模型對象$this-> load->helper()幫助對象幫助對象->load->view(「視圖名稱」,$變量名)裝載視圖時分配變量 5.2、 $this->uri屬性-
5.2.1、裝載器類別的實例 system// core/URI.php
-
php5. >.2、CI_URI
- 提供的方法:提供的方法:$$this$this$this$this$this$this$this$this$this->uri->Segment(
n-
nn用於獲取URL中的第n個參數控制器代表1,動作代表
- 2,值1,值1代表>3
,值-
2代表為4…用法1:入口檔案/控制器/動作/值1
/值-
2 echo $this->uri->uri->s
->(- 3
);-
//輸出值1用法2:index.
php-
/控制器/動作/6
- //可以直接取得;參數一定要對應正確publicfunction(function(function($id=0){echo $id;echo $id;; //輸出6}
-
-
5.3、$this->input屬性
-
5.3.1.1、、 system/core/Input
- .Input.. 5.3.
- 2、
- CI_Input、CI_Input、CI_Input提供的方法🎜> : $this
->-
input post('username');//$_POST["username"];//$_POST["username"]; $this
- ->input->server->server( 🎜>DOCUMENT_ROOT”);//$_SERVER[“DOCUMENT_ROOT”]
-
$this ->input->server(“REMOTE_ADDRREMOTE_ADDR” >
//客戶端IP-
$this->
input- ->
input-
->input
->- input
->-
input->server(“SERVER_ADDR”);//伺服器端IP//伺服器端IP
-
注意:在視圖中,可以直接用$this來訪問超級對像中的屬性 6、存取資料庫
-
6.1-
6.1、修改檔案:
application-
/config/數據🎜>6.2、裝載數據庫操作類:$this->load ->database();
- 載入成功後,會放入超級物件的屬性中,預設屬性名稱是db$this->dbdbdbdb
-
db、$query= $this->db->dbdb ->query
(-
$sql);//回傳值是物件(array_fetch_object) $sql = $this->db
->-
db->db->db->db->db
->-
db-> 🎜>last_query($sql);//顯示最後一條執行的語句 6.3.
- 1、$query=$query== this->db->
- escape();/此函數會確定數據類型,對字符串類型數據轉義6.4、$list= $query->
- result();//傳回數組,數組中是一個一個的物件//返回數組,數組中是一個一個的物件 6.5、$list= $query
=-
$queryresult_array();//返回二維數組,裡面是關聯數組6.6 、$row= $query
- ->row->row->row//傳回第一條數據,直接是一個物件6.7、
- $row、
- $row、$row
- = $query->row_array();
- //傳回第一條資料,是一個數組6.8、$count= $query= $query=
$querynum_rows();//返回結果集的行數6.9 、$field= $query->num_fields >//回傳請求的欄位數6.10、$count=$count== 🎜> $query->affected_rows();//返回受影響的行數6.11、$id= $query-> $query->🎜> ();//返回自增ID 7、數據庫中的配置7.1、自動加載db:在application/config/loadtoload/autoload/ >php中設定:-
$autoload[「libraries」]=」]=」]=
array(“-
database”);這樣就不需要 $this----
-- -
-- -----
-- -------- >load->database();
-
7.2、參數綁定$name = $this= $this=input->
- post(“
- name”);name”); $pwd = $this
- ->input--post(“pwd”);//使用問號綁定參數
-
$data[0]=]=] 🎜>;$data[1]
- 1]1]1]1]1]1]1]
-
> $pwd;
- //用二維數組傳遞值$sql =$sql =$sql =$sql >“
- insertinto ci_user(name, pwd) values (?,?)”;//多問號,需要傳遞索引數組
-
$bool = $this->db->db->- query
(-
$sql,$data);$data););//回傳值是boolean7.3、表前綴配置在
- 在
- /config/database.
- php.php中設定:$db['default']['dbprefix']['dbprefix
- ']='ci_';
-
$db >['default
- ']['swap_pre']=']
- =ci_';配置為一樣,程式碼中,直接寫表前綴後面的名就行了,如果以後項目表前綴發生變化,只需要修改$db['default
']['-
dbprefix']['dbprefix ']='new_',程式碼中
- ci_會自動替換為new_ 8、資料庫作業( 🎜>
模型)-
8.1、設定application
/- database
.-
php中中
中-
= TRUE;
-
8.2、在設定檔中,設定檔後,會自動加入8.3、找(get):get):get):
get-
):get >$res =
$this- ->
db-
->db->db-> >
('表名');-
//返回結果集對象$list =
$res-
->result();//傳回數組,數組中是一個的物件 $list = $res
->result_array(); //回傳二維數組,裡面是關聯數組8.4、插入(insertinsertinsertinsert ://數據使用關聯數組$data[“數據庫字段名”]=值;//$this->input->post(“名稱”);$data$data$data$data [「資料庫欄位名稱」]=值;$res =$res =$res =$res =$res $this->db->insert(「資料表名」,insert(「資料表名」, $data);//回傳結果boolean;8.5、修改( update)://數據使用關聯數組$data [“資料庫欄位名稱”]=值;//$this->input->post(“name”); $data[「資料庫欄位名稱」]=值;值;值;= array(“id”=>”4”);-
$res = $this->db->db->db->db->->update
- (「資料表名」,$data,$where);
//回傳結果boolean;-
8.6、刪除(delete):delete):delete
):-
$where = array(“id”id”id4
”); $res -
= $this ->db
->- dalete
(「資料表名」,-
$where);//回傳結果boolean; 99、、 AR的連貫操作
-
9.19.19.1
-
9.19.19.1$res= $this->
db-
->db->db->db
->-
db->db->db->("id,name"
)-
//找到的欄位->
->- ->->->->->from(
"user"-
)//資料表名->
- where(
- "id
>",3
- )//條件
id與>之間必須要有空格->order_by("id
desc")//排序->limit(limit(
-
3,1)//分頁;表示跳過1條,取3條,與tp相反 ->get();//取得資料//取得資料$ list = $res
- ->result_array();( 🎜>9.2、where()條件條件符:「>」、「>=」、 「1、只有單一條件時數:9.2.
1-
、1、$res = $this->db->whereget();例如:$res例如:
$res-
例如:$res例如:$res
例如:-
$res例如:$res例如:$res = $this->db->where(“name”,”admin”)->get();
- //自動會加上“=”9.2.2、$res= $this->db->db->(“字段=”,”值”)->get();();例如:$res= $this
- ->db->db->-db->--where(“name=”,”admin”)->admin”)-> get
();-
//必須要有空格2、有多個條件時:用
array()9.2.3 、$res= $this->db->db->- where(array(“字段”=>”值”,“字段”=>”值”))) ->get();例如:$res= $this->db->where(array( 🎜>(“name”=>”admin”,“”,“”,““id>3”=>”2”))->”))->get();9.2.4.4、複雜的語句使用、複雜的語句使用、複雜的語句使用$this->db->query(query( >$sql,$data);//使用問號綁定參數//使用問號綁定參數9.3、join連接查詢-
9.3.1、預設為左查詢(left
join … on)
-
$this-$this->- db->
select-
(「欄位」)->
-
->(「資料表名」)->join('連接表'
- ,'連接條件')->get ();
-
//預設為左詢問(left
join … on) 例如:$this->db
- ->select(“*”)->from
- ->from("user”)->join('category ', user.id
- = category
=
- categoryid
- )//預設為左查詢(left
join )
- ->get();
-
9.3.2、透過join()第三個可透過join()第三個可透過join()第三個可透過join()第三個可選參數選擇連接,可選參數包括:left、 right、outer、 inner、left outer、right outer
-
例如:
-
$ this->db->select(“*”)
-
->from(“user”)
-
->join(“category ”, “user.id = category.id”,”left”)//透過第三個參數指定
-
->get();
-
10、擴充CI控制器
-
-
10.1、擴充控制器
- 10.1、擴充控制器
- 1.在application/core新建一個自己的控制器(MY_Controller),新建的控制器繼承CI_Controller類,可以從自己建立的控制器中進行擴充。
- 例如:class MY_Controller extends CI_Controller{
- Public function __consreuct(){
Public function __consreuct(){- Public function __consreuct(){
::__construct(); //呼叫父類別的建構方法- //登陸驗證//權限驗證}}2、讓welcome.php繼承自己創建的控制器(MY_Controller),MY_Controller),間接繼承CI_Controller。
- 3、控制器前綴可以修改
- 在application/config/config.php中修改:
-
$config['subclass_prefix'] = 'MY_';
- 11、模型(model)
- 11.1、模型檔案命名:user_model.php 、category_model.php,檔案名稱小寫
-
建議:模型檔案名稱使用_model為後綴,防止與控制器類別名稱衝突!
-
11.2、所有的模型,直接或間接繼承自CI_Model類,類名首字母大寫
-
11.3、裡面創建所需要的方法:getAll()…
-
11.4、控制器中載入模型:$this->load->model(“模型檔名”); //不加字尾
-
11.5、控制器中載入模型時起別名:$this->load->model(“模型檔名”,”別名”);
-
載入成功後,會放入超級物件的屬性中,預設屬性名稱是模型檔案名稱或別名
-
11.6、控制器中呼叫模型,取得資料:$this- >模型檔名->方法名稱();
-
例如:$this->load->model(“User_model”); //注意大小寫
- $this->User_model->getAll(); //呼叫模型,取得資料
-
11.6.1、控制器中呼叫模型,取得資料:$ this->別名->方法名稱();
-
例如:$this->load->model(“User_model”,”user”); //注意大小寫
-
$this->user->getAll(); //呼叫模型,取得資料
-
12、CI中url相關函數
-
12.1、載入輔助函數:$this->load->helper(“url”);
-
設定自動載入輔助函數:在application/ config/autoload.php中配置
-
$autoload['helper'] = array('url');
-
就不用寫$this->load->helper(“url”);
-
輔助函數:
-
site_url(“控制器/動作/參數”) ; //處理url及參數
-
在視圖中使用 php echo site_url(“控制器/動作/參數”)?>
-
base_url();//返回網站的根目錄(“ci/”);
-
13、CI中的路由與偽靜態、隱藏index.php入口檔案
-
13.1、路由設定
-
-
在application/config/routes.php中設置/修改:
-
-
$route['default_controller'] = "welcome"; //默認的控制器為welcome
-
- 13.2、偽靜態設定
-
在application/config/routes.php中設定/修改:
-
//正則匹配(控制器/)
-
$route['news/[d]{6}/([dw]+).html ']
= 'user/show/$1
';- $1
';- $1
'; http://localhost/CI/index.php/news/201401/caolizhi66.html 將動作news中的參數路由到user/show/ $1 13.3、隱藏入口文件index.php 開啟🎜>13.3. apache設定檔:LoadModule rewrite_module modules/mod_rewrite.so 13.3.2、在入口檔案統計目錄中,建立一個.htaccess文件,內容如下:
RewriteEngine on //啟用偽靜態 RewQUEfond % //符合不存在的目錄 RewriteCond %{REQUEST_FILENAME} !-f //符合不存在的檔案 Rewrite *)$ index.php/$1 [QSA,PT,L] //重寫規則 這樣就不用寫入口文件index.php了-
14、CI中的分頁-
$this->load->library('pagination
'); '); '); 1 $config['- base_url
'] = $url;-
2 /* 分頁的基礎L2 /* 分頁的基礎L
-
3 如果你想用a、b的連結形式,則該url應該形式如/news/page/ 4 如果連結是c、d的形式,則url應該如/news? 5 */ 6 $config['total_rows'] = $total;//記錄總數,這個沒什麼好說的了,就是你從資料庫取得記錄總數7 $config['per_page '] = $pagesize; //每頁條數。額,這個也沒什麼好說的。 。自己設定。預設為10好像。
-
8 $config['page_query_string'] = TRUE;
-
/傳參形式。開啟true則會自動在你的url後面加上&per_page=3。 (這個per_page是預設的查詢字符,當然也可以用$config['query_string_segment']自己設定)
- 10 因此c、d中的形式一般是為localhost/news?&per_page=2不過都一樣,沒什麼影響。 get的per_page還是3
- 11 */
-
12 $config['first_link12 $config['first_link首頁';
// 第一頁顯示
-
13 $config['last_link'] = '末頁';
// 最後一頁顯示
-
14 $config['next_link'] = '下一頁'] = '下一頁
- >';
// 下一頁顯示15 $config['prev_link'] = '
- '] = '上一頁';
// 上一頁顯示16 $config['cur_tag_open'] = '
aclass="current">';
// 目前頁面開始樣式17 $config['cur_tag_close'] = ''] = '-
'] = '
-
/a
>- ';>';
- 18 /*目前頁結束樣式。這些你可以自己試試看。 19比如說我想讓當前頁的分頁數字樣式好看一點,紅色字體等。你就可以在current上加上css代碼代碼20
- */21 $config['21 $config['']
= 2;//目前連線前後顯示頁碼個數。意思是說你目前頁是第5頁,那你可以看到3
- 、4、
- 5、6
- 、7、
- 7頁。 22 $config[' uri_segment']=
- 4=4
23
/*這個是你在用a)、b)連結樣式的時候,用來判斷頁頁數。 24 例如localhost/news/page/3 這個uri_segment就要設定為3。 localhost/news/title/page/3這個就要設定為425 */26 $config['use_page_numbers']= TRUE;; 27/*這個就是a)、b)的差別了。開啟了,page就會表示頁數。 false就會表示記錄數
以上就介紹了 CI框架簡單使用方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。