Ci框架簡單使用說明(自己收藏使用)

轉載地址:https://blog.csdn.net/admin_admin/article/details/51769805

CodeIgniter框架
 1、回憶MVC
 1.1、M:模型冤寿,提供數(shù)據(jù)杆煞,保存數(shù)據(jù)
1.2混槐、V:視圖沼死,只負責顯示劫瞳,表單form
1.3阁吝、C:控制器砚婆,協(xié)調模型和視圖
1.4、action:動作突勇,是控制器中的方法装盯,用于被瀏覽器請求
 
2、CI中的MVC
CI簡介:CodeIgniter是一個輕量級但功能強大的php框架甲馋,基于MVC的設計模式埂奈。提供了一套豐富的類庫
 
2.1、訪問的url使用的pathinfo
2.2定躏、格式:入口文件/控制器/動作(默認pathinfo格式)
2.3账磺、application目錄:
 
Controllers控制器
Models模型
Views視圖
 
2.4、默認的控制器是welcome
2.5痊远、默認的動作是index
2.6垮抗、文件名全部小寫

3、控制器(controller):
3.1碧聪、不需要加后綴冒版,直接是類名.php
3.2、文件名全部小寫逞姿,例如 user.php(大寫的文件名瀏覽器不支持)
3.3辞嗡、所有的控制器,直接或間接繼承自CI_Controller類滞造,類名首字母大寫
3.4欲间、方法名不區(qū)分大小寫
 
動作要求:1.必須以public開頭
 
2.不能以下劃線(_)開頭
注意!方法名與類名相同断部,會被php當做構造方法(__construct)
 
4猎贴、視圖(view)
 
4.1、在控制器中加載視圖:$this->load->view(“user_add”);//不加擴展名
4.2、在控制器中加載視圖:$this->load->view(“user/add”);//不加擴展名
注意:可以多次調用$this->load->view(視圖);
4.3她渴、視圖中达址,直接使用原生php代碼
4.4、在控制器中分配變量:$this->load->vars(“視圖中變量名”趁耗,php中變量名);
 
例如:$str=“abcdefg”;
$this->load->vars(“str”,$str);
視圖中使用:<?php echo $str;?>
 
4.5沉唠、在控制器中分配多個變量:
 
例如:$str=“abcd”;
$list = array(“id”=>”1”,”name”=>”zhangsan”,”pwd”=>”1234”);
$data[“str”]= $str;
$data[“l(fā)ist”]= $list;
$this->load->vars($data);
 
4.6、CI框架會自己解決php中的短標簽<?=…?>
4.7苛败、推薦使用:<?phpforeach($listas $key=>$val):?>…<?php endforeach;?>

5满葛、超級對象:當前控制器對象,提供了很多屬性
 
5.1罢屈、$this->load屬性
5.1.1嘀韧、裝載器類的實例 system/core/Loader.php
5.1.2、CI_Loader提供的方法:
$this->load->view()裝載視圖
$this->load->vars()分配變量到視圖
$this->load->database()裝載數(shù)據(jù)庫操作對象
$this->load->model()裝載模型對象
$this->load->helper()幫助對象
$this->load->view(“視圖名”,$變量名)裝載視圖時分配變量
 
5.2缠捌、$this->uri屬性
5.2.1锄贷、裝載器類的實例 system/core/URI.php
5.2.2、CI_URI提供的方法:
$this->uri->Segment(n)用于獲取URL中的第n個參數(shù)
控制器代表1曼月,動作代表2谊却,值1代表3,值2代表為4…
用法1:入口文件/控制器/動作/值1/值2
echo $this->uri->segment(3)哑芹;//輸出值1
用法2:index.php/控制器/動作/6
//可以直接獲取;參數(shù)一定要對應正確
publicfunction($id=0){
echo $id;//輸出6
}
 
5.3炎辨、$this->input屬性
5.3.1、裝載器類的實例 system/core/Input.php
5.3.2聪姿、CI_Input提供的方法:
 
$this->input->post(‘username’);//$_POST[“username”];
$this->input->server(“DOCUMENT_ROOT”);//$_SERVER[“DOCUMENT_ROOT”]
$this->input->server(“REMOTE_ADDR”);//客戶端IP
$this->input->server(“SERVER_ADDR”);//服務器端IP
注意:在視圖中碴萧,可以直接用$this來訪問超級對象中的屬性
 
6、訪問數(shù)據(jù)庫
 
6.1咳燕、修改配置文件:application/config/database.php
6.2勿决、裝載數(shù)據(jù)庫操作類:$this->load->database();
加載成功后乒躺,會放入超級對象的屬性中招盲,默認屬性名是db
$this->db
6.3、$query= $this->db->query($sql);//返回值是對象(array_fetch_object)
$sql = $this->db->last_query($sql);//顯示最后一條執(zhí)行的sql語句
6.3.1嘉冒、$query= $this->db->escape();//此函數(shù)會確定數(shù)據(jù)類型曹货,對字符串類型數(shù)據(jù)轉義
6.4、$list= $query->result();//返回數(shù)組讳推,數(shù)組中是一個一個的對象
6.5顶籽、$list= $query->result_array();//返回二維數(shù)組,里面是關聯(lián)數(shù)組
6.6银觅、$row= $query->row();//返回第一條數(shù)據(jù)礼饱,直接是一個對象
6.7、$row= $query->row_array();//返回第一條數(shù)據(jù),是一個數(shù)組
6.8、$count= $query->num_rows();//返回結果集的行數(shù)
6.9镊绪、$field= $query->num_fields();//返回請求的字段數(shù)
6.10匀伏、$count= $query->affected_rows();//返回受影響的行數(shù)
6.11、$id= $query->insert_id();//返回自增ID
 
7蝴韭、數(shù)據(jù)庫中的配置
7.1够颠、自動加載db:
在application/config/autoload.php中配置:
$autoload[“l(fā)ibraries”]= array(“database”);
這樣就不需要 $this->load->database();

7.2、參數(shù)綁定
$name = $this->input->post(“name”);
$pwd = $this->input->post(“pwd”);
//使用問號綁定參數(shù)
$data[0]= $name;
$data[1]= $pwd;//用二維數(shù)組傳遞值
$sql =“insertinto ci_user(name,pwd) values (?,?)”;//多個問號,需要傳一個索引數(shù)組
$bool = $this->db->query($sql,$data);//返回值是boolean
7.3榄鉴、表前綴配置
在application/config/database.php中配置:
$db[‘default’][‘dbprefix’]=‘ci_’;
$db[‘default’][‘swap_pre’]=‘ci_’;
配置為一樣履磨,代碼中,直接編寫表前綴后面的名就行了庆尘,如果以后項目表前綴發(fā)生變化剃诅,只需要修改$db[‘default’][‘dbprefix’]=‘new_’,代碼中ci_會自動替換為new_
 
8减余、數(shù)據(jù)庫操作(AR模型)
8.1综苔、配置application/cinfig/database.php中
$active_record = TRUE;
8.2、在配置文件中位岔,配置表前綴后如筛,會自動添加
8.3、查找(get):
$res = $this->db->get(‘表名’);//返回結果集對象
$list = $res->result();//返回數(shù)組抒抬,數(shù)組中是一個一個的對象
$list = $res->result_array();//返回二維數(shù)組杨刨,里面是關聯(lián)數(shù)組
8.4、插入(insert):
//數(shù)據(jù)使用關聯(lián)數(shù)組
$data[“數(shù)據(jù)庫字段名”]=值擦剑;//$this->input->post(“name”);
$data[“數(shù)據(jù)庫字段名”]=值妖胀;
$res = $this->db->insert(“數(shù)據(jù)表名”,$data);//返回結果boolean;
8.5、修改(update):
//數(shù)據(jù)使用關聯(lián)數(shù)組
$data[“數(shù)據(jù)庫字段名”]=值惠勒;//$this->input->post(“name”);
$data[“數(shù)據(jù)庫字段名”]=值赚抡;
$where = array(“id”=>”4”);
$res = $this->db->update(“數(shù)據(jù)表名”,$data,$where);//返回結果boolean;
8.6、刪除(delete):
$where = array(“id”=>”4”);
$res = $this->db->dalete(“數(shù)據(jù)表名”, $where);//返回結果boolean;
 
9纠屋、AR的連貫操作
 
9.1涂臣、$res= $this->db->select("id,name")//查找的字段
->from("user")//數(shù)據(jù)表名
->where("id >",3)//條件 id與>之間必須要有空格
->order_by("id desc")//排序
->limit(3,1)//分頁;表示跳過1條售担,取3條赁遗,與tp相反
->get();//獲取數(shù)據(jù)
$list = $res->result_array();
9.2、where()條件
條件符:“>”族铆、“>=”岩四、“<”、“<=”哥攘、“=”剖煌、“!=“材鹦;不指定條件付默認是”=“
1、只有單個條件時:
9.2.1耕姊、$res= $this->db->where(“字段”,”值”)->get();
例如:$res= $this->db->where(“name”,”admin”)->get();//自動會加上“=”
9.2.2侠姑、$res= $this->db->where(“字段=”,”值”)->get();
例如:$res= $this->db->where(“name=”,”admin”)->get();//必須要有空格
2、有多個條件時:用array()
9.2.3箩做、$res= $this->db->where(array(“字段”=>”值”,“字段”=>”值”))->get();
例如:$res= $this->db->where(array(“name”=>”admin”,“id>3”=>”2”))->get();
9.2.4莽红、復雜的查詢語句使用$this->db->query($sql,$data);//使用問號綁定參數(shù)
9.3、join連接查詢
9.3.1邦邦、默認為左查詢(left join … on)
$this->db->select(“字段”)
->from(“數(shù)據(jù)表名”)
->join('連接表','連接條件')
->get();    //默認為左查詢(left join … on) 例如:
$this->db->select(“*”)
->from(“user”)
->join('category', user.id= category.id)//默認為左查詢(left join )
->get();
9.3.2安吁、通過join()第三個可選參數(shù)選擇連接,可選參數(shù)包括:left燃辖、 right鬼店、outer、 inner黔龟、left outer妇智、right outer
例如:
$this->db->select(“*”)
->from(“user”)
->join(“category”, “user.id = category.id”,”left”)//通過第三個參數(shù)指定
->get();
10、擴展CI控制器
 
10.1氏身、擴展控制器
1巍棱、在application/core新建一個自己的控制器(MY_Controller),新建的控制器繼承CI_Controller類蛋欣,可以從自己創(chuàng)建的控制器中進行擴展航徙。
例如:class MY_Controller extends CI_Controller{
Public function __consreuct(){
Parent::__construct(); //調用父類的構造方法
//登陸驗證
//權限驗證
}
}
2、讓welcome.php繼承自己創(chuàng)建的控制器(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惨恭、里面創(chuàng)建所需要的方法:getAll()…
11.4、控制器中加載模型:$this->load->model(“模型文件名”); //不加后綴
11.5耙旦、控制器中加載模型時起別名:$this->load->model(“模型文件名”,”別名”);
加載成功后脱羡,會放入超級對象的屬性中萝究,默認屬性名是模型文件名或別名
11.6、控制器中調用模型锉罐,獲取數(shù)據(jù):$this->模型文件名->方法名();
例如:$this->load->model(“User_model”); //注意大小寫
$this->User_model->getAll(); //調用模型帆竹,獲取數(shù)據(jù)
11.6.1、控制器中調用模型脓规,獲取數(shù)據(jù):$this->別名->方法名();
例如:$this->load->model(“User_model”,”user”); //注意大小寫
$this->user->getAll(); //調用模型栽连,獲取數(shù)據(jù)
12、CI中url相關函數(shù)
12.1侨舆、加載輔助函數(shù):$this->load->helper(“url”);
配置自動加載輔助函數(shù):在application/config/autoload.php中配置
$autoload['helper'] = array('url');
就不用寫$this->load->helper(“url”);
輔助函數(shù):
site_url(“控制器/動作/參數(shù)”) ; //處理url及參數(shù)
在視圖中使用<?php echo site_url(“控制器/動作/參數(shù)”)?>
base_url()秒紧;//返回網(wǎng)站的根目錄(“ci/”);
13、CI中的路由與偽靜態(tài)挨下、隱藏index.php入口文件
13.1熔恢、路由設置
 
在application/config/routes.php中設置/修改:
 
$route['default_controller'] = "welcome"; //默認的控制器為welcome
 
13.2、偽靜態(tài)設置
在application/config/routes.php中設置/修改:
//正則匹配(控制器/)
$route['news/[\d]{6}/([\d\w]+)\.html'] = 'user/show/$1';
http://localhost/CI/index.php/news/201401/caolizhi66.html
將動作news中的參數(shù)路由到user/show/$1
 
13.3臭笆、隱藏入口文件index.php
13.3.1叙淌、開啟apache配置文件:LoadModule rewrite_module modules/mod_rewrite.so
13.3.2、在入口文件統(tǒng)計目錄中愁铺,創(chuàng)建一個.htaccess文件鹰霍,內容如下:
<IFModule mod_rewrite.c>
RewriteEngine on //啟用偽靜態(tài)
RewriteCond %{REQUEST_FILENAME} !-d //匹配不存在的目錄
RewriteCond %{REQUEST_FILENAME} !-f //匹配不存在的文件
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] //重寫規(guī)則
</IFModule>
 
這樣就不用寫入口文件index.php了
 
14、CI中的分頁
$this->load->library('pagination');
1 $config['base_url'] = $url;
2 /* 分頁的基礎 URL
3 如果你想用a茵乱、b的鏈接形式衅谷,則該url應該形式如/news/page/
4 如果鏈接是c、d的形式似将,則url應該如/news?
5 */
6 $config['total_rows'] = $total;//記錄總數(shù)获黔,這個沒什么好說的了,就是你從數(shù)據(jù)庫取得記錄總數(shù)
7 $config['per_page'] = $pagesize; //每頁條數(shù)在验。額玷氏,這個也沒什么好說的。腋舌。自己設定盏触。默認為10好像。
8 $config['page_query_string'] = TRUE;
9 /*傳參形式块饺。開啟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_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比如說我想讓當前頁的分頁數(shù)字樣式好看一點屉佳,紅色字體等。你就可以在current上加上css代碼
20*/
21 $config['num_links'] = 2;//當前連接前后顯示頁碼個數(shù)洲押。意思就是說你當前頁是第5頁武花,那么你可以看到3、4杈帐、5体箕、6、7頁挑童。
22 $config['uri_segment']=4;
23/*這個是你在用a)干旁、b)鏈接樣式的時候,用來判斷頁頁數(shù)炮沐。
24 比如localhost/news/page/3 這個uri_segment就要設定為3争群。localhost/news/title/page/3這個就要設定為4
25 */
26 $config['use_page_numbers']= TRUE;
27/*這個就是a)、b)的差別了大年。開啟了换薄,page就會表示頁數(shù)。false就會表示記錄數(shù)
15.定義常量
    constants.php
    //自定義常量  define('GATEWAY_URL', 'http://pay.bebanks.com');
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末翔试,一起剝皮案震驚了整個濱河市轻要,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垦缅,老刑警劉巖冲泥,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壁涎,居然都是意外死亡凡恍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門怔球,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚼酝,“玉大人,你說我怎么就攤上這事竟坛∶龉” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵担汤,是天一觀的道長涎跨。 經(jīng)常有香客問我,道長崭歧,這世上最難降的妖魔是什么隅很? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮驾荣,結果婚禮上外构,老公的妹妹穿的比我還像新娘。我一直安慰自己播掷,他們只是感情好审编,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著歧匈,像睡著了一般垒酬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上件炉,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天勘究,我揣著相機與錄音,去河邊找鬼斟冕。 笑死口糕,一個胖子當著我的面吹牛,可吹牛的內容都是我干的磕蛇。 我是一名探鬼主播景描,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秀撇!你這毒婦竟也來了超棺?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呵燕,失蹤者是張志新(化名)和其女友劉穎棠绘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體再扭,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡氧苍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泛范。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片候引。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敦跌,靈堂內的尸體忽然破棺而出澄干,到底是詐尸還是另有隱情,我是刑警寧澤柠傍,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布麸俘,位于F島的核電站,受9級特大地震影響惧笛,放射性物質發(fā)生泄漏从媚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一患整、第九天 我趴在偏房一處隱蔽的房頂上張望拜效。 院中可真熱鬧喷众,春花似錦、人聲如沸紧憾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赴穗。三九已至憔四,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間般眉,已是汗流浹背了赵。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留甸赃,地道東北人柿汛。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像埠对,于是被迫代替她去往敵國和親苛茂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容