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

轉(zhuǎn)載自地址:https://blog.csdn.net/admin_admin/article/details/51769805


CodeIgniter框架

1闷煤、回憶MVC

1.1、M:模型涮瞻,提供數(shù)據(jù)鲤拿,保存數(shù)據(jù)

1.2、V:視圖署咽,只負(fù)責(zé)顯示近顷,表單form

1.3生音、C:控制器,協(xié)調(diào)模型和視圖

1.4窒升、action:動(dòng)作缀遍,是控制器中的方法,用于被瀏覽器請(qǐng)求

2饱须、CI中的MVC

CI簡(jiǎn)介:CodeIgniter是一個(gè)輕量級(jí)但功能強(qiáng)大的php框架域醇,基于MVC的設(shè)計(jì)模式。提供了一套豐富的類庫(kù)

2.1蓉媳、訪問的url使用的pathinfo

2.2譬挚、格式:入口文件/控制器/動(dòng)作(默認(rèn)pathinfo格式)

2.3、application目錄:

Controllers控制器

Models模型

Views視圖

2.4酪呻、默認(rèn)的控制器是welcome

2.5减宣、默認(rèn)的動(dòng)作是index

2.6、文件名全部小寫

3玩荠、控制器(controller):

3.1漆腌、不需要加后綴,直接是類名.php

3.2姨蟋、文件名全部小寫屉凯,例如 user.php(大寫的文件名瀏覽器不支持)

3.3、所有的控制器眼溶,直接或間接繼承自CI_Controller類悠砚,類名首字母大寫

3.4、方法名不區(qū)分大小寫

動(dòng)作要求:1.必須以public開頭

2.不能以下劃線(_)開頭

注意堂飞!方法名與類名相同灌旧,會(huì)被php當(dāng)做構(gòu)造方法(__construct)

4、視圖(view)

4.1绰筛、在控制器中加載視圖:$this->load->view(“user_add”);//不加擴(kuò)展名

4.2枢泰、在控制器中加載視圖:$this->load->view(“user/add”);//不加擴(kuò)展名

注意:可以多次調(diào)用$this->load->view(視圖);

4.3、視圖中铝噩,直接使用原生php代碼

4.4衡蚂、在控制器中分配變量:$this->load->vars(“視圖中變量名”,php中變量名);

例如:$str=“abcdefg”;

$this->load->vars(“str”,$str);

視圖中使用:<?php echo $str;?>

4.5骏庸、在控制器中分配多個(gè)變量:

例如:$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框架會(huì)自己解決php中的短標(biāo)簽<?=…?>

4.7、推薦使用:<?phpforeach($listas $key=>$val):?>…<?php endforeach;?>

5具被、超級(jí)對(duì)象:當(dāng)前控制器對(duì)象玻募,提供了很多屬性

5.1、$this->load屬性

5.1.1一姿、裝載器類的實(shí)例 system/core/Loader.php

5.1.2七咧、CI_Loader提供的方法:

$this->load->view()裝載視圖

$this->load->vars()分配變量到視圖

$this->load->database()裝載數(shù)據(jù)庫(kù)操作對(duì)象

$this->load->model()裝載模型對(duì)象

$this->load->helper()幫助對(duì)象

$this->load->view(“視圖名”,$變量名)裝載視圖時(shí)分配變量

5.2跃惫、$this->uri屬性

5.2.1、裝載器類的實(shí)例 system/core/URI.php

5.2.2艾栋、CI_URI提供的方法:

$this->uri->Segment(n)用于獲取URL中的第n個(gè)參數(shù)

控制器代表1爆存,動(dòng)作代表2,值1代表3裹粤,值2代表為4…

用法1:入口文件/控制器/動(dòng)作/值1/值2

echo $this->uri->segment(3)终蒂;//輸出值1

用法2:index.php/控制器/動(dòng)作/6

//可以直接獲取;參數(shù)一定要對(duì)應(yīng)正確

publicfunction($id=0){

echo $id;//輸出6

}

5.3、$this->input屬性

5.3.1遥诉、裝載器類的實(shí)例 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”);//服務(wù)器端IP

注意:在視圖中,可以直接用$this來訪問超級(jí)對(duì)象中的屬性

6矮锈、訪問數(shù)據(jù)庫(kù)

6.1霉翔、修改配置文件:application/config/database.php

6.2、裝載數(shù)據(jù)庫(kù)操作類:$this->load->database();

加載成功后苞笨,會(huì)放入超級(jí)對(duì)象的屬性中债朵,默認(rèn)屬性名是db

$this->db

6.3、$query= $this->db->query($sql);//返回值是對(duì)象(array_fetch_object)

$sql = $this->db->last_query($sql);//顯示最后一條執(zhí)行的sql語句

6.3.1瀑凝、$query= $this->db->escape();//此函數(shù)會(huì)確定數(shù)據(jù)類型序芦,對(duì)字符串類型數(shù)據(jù)轉(zhuǎn)義

6.4、$list= $query->result();//返回?cái)?shù)組粤咪,數(shù)組中是一個(gè)一個(gè)的對(duì)象

6.5谚中、$list= $query->result_array();//返回二維數(shù)組,里面是關(guān)聯(lián)數(shù)組

6.6寥枝、$row= $query->row();//返回第一條數(shù)據(jù)宪塔,直接是一個(gè)對(duì)象

6.7、$row= $query->row_array();//返回第一條數(shù)據(jù),是一個(gè)數(shù)組

6.8囊拜、$count= $query->num_rows();//返回結(jié)果集的行數(shù)

6.9某筐、$field= $query->num_fields();//返回請(qǐng)求的字段數(shù)

6.10、$count= $query->affected_rows();//返回受影響的行數(shù)

6.11冠跷、$id= $query->insert_id();//返回自增ID

7南誊、數(shù)據(jù)庫(kù)中的配置

7.1、自動(dòng)加載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”);

//使用問號(hào)綁定參數(shù)

$data[0]= $name;

$data[1]= $pwd;//用二維數(shù)組傳遞值

$sql =“insertinto ci_user(name,pwd) values (?,?)”;//多個(gè)問號(hào),需要傳一個(gè)索引數(shù)組

$bool = $this->db->query($sql,$data);//返回值是boolean

7.3抄囚、表前綴配置

在application/config/database.php中配置:

$db[‘default’][‘dbprefix’]=‘ci_’;

$db[‘default’][‘swap_pre’]=‘ci_’;

配置為一樣,代碼中盗冷,直接編寫表前綴后面的名就行了,如果以后項(xiàng)目表前綴發(fā)生變化同廉,只需要修改$db[‘default’][‘dbprefix’]=‘new_’仪糖,代碼中ci_會(huì)自動(dòng)替換為new_

8柑司、數(shù)據(jù)庫(kù)操作(AR模型)

8.1、配置application/cinfig/database.php中

$active_record = TRUE;

8.2锅劝、在配置文件中攒驰,配置表前綴后,會(huì)自動(dòng)添加

8.3故爵、查找(get):

$res = $this->db->get(‘表名’);//返回結(jié)果集對(duì)象

$list = $res->result();//返回?cái)?shù)組玻粪,數(shù)組中是一個(gè)一個(gè)的對(duì)象

$list = $res->result_array();//返回二維數(shù)組,里面是關(guān)聯(lián)數(shù)組

8.4诬垂、插入(insert):

//數(shù)據(jù)使用關(guān)聯(lián)數(shù)組

$data[“數(shù)據(jù)庫(kù)字段名”]=值劲室;//$this->input->post(“name”);

$data[“數(shù)據(jù)庫(kù)字段名”]=值;

$res = $this->db->insert(“數(shù)據(jù)表名”,$data);//返回結(jié)果boolean;

8.5结窘、修改(update):

//數(shù)據(jù)使用關(guān)聯(lián)數(shù)組

$data[“數(shù)據(jù)庫(kù)字段名”]=值很洋;//$this->input->post(“name”);

$data[“數(shù)據(jù)庫(kù)字段名”]=值;

$where = array(“id”=>”4”);

$res = $this->db->update(“數(shù)據(jù)表名”,$data,$where);//返回結(jié)果boolean;

8.6隧枫、刪除(delete):

$where = array(“id”=>”4”);

$res = $this->db->dalete(“數(shù)據(jù)表名”, $where);//返回結(jié)果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)//分頁(yè)官脓;表示跳過1條协怒,取3條,與tp相反

->get();//獲取數(shù)據(jù)

$list = $res->result_array();

9.2卑笨、where()條件

條件符:“>”孕暇、“>=”、“<”湾趾、“<=”芭商、“=”、“!=“搀缠;不指定條件付默認(rèn)是”=“

1铛楣、只有單個(gè)條件時(shí):

9.2.1、$res= $this->db->where(“字段”,”值”)->get();

例如:$res= $this->db->where(“name”,”admin”)->get();//自動(dòng)會(huì)加上“=”

9.2.2艺普、$res= $this->db->where(“字段=”,”值”)->get();

例如:$res= $this->db->where(“name=”,”admin”)->get();//必須要有空格

2簸州、有多個(gè)條件時(shí):用array()

9.2.3、$res= $this->db->where(array(“字段”=>”值”,“字段”=>”值”))->get();

例如:$res= $this->db->where(array(“name”=>”admin”,“id>3”=>”2”))->get();

9.2.4歧譬、復(fù)雜的查詢語句使用$this->db->query($sql,$data);//使用問號(hào)綁定參數(shù)

9.3岸浑、join連接查詢

9.3.1、默認(rèn)為左查詢(left join … on)

$this->db->select(“字段”)

->from(“數(shù)據(jù)表名”)

->join('連接表','連接條件')

->get();? ? //默認(rèn)為左查詢(left join … on) 例如:

$this->db->select(“*”)

->from(“user”)

->join('category', user.id= category.id)//默認(rèn)為左查詢(left join )

->get();

9.3.2瑰步、通過join()第三個(gè)可選參數(shù)選擇連接矢洲,可選參數(shù)包括:left、 right缩焦、outer读虏、 inner责静、left outer、right outer

例如:

$this->db->select(“*”)

->from(“user”)

->join(“category”, “user.id = category.id”,”left”)//通過第三個(gè)參數(shù)指定

->get();

10盖桥、擴(kuò)展CI控制器

10.1灾螃、擴(kuò)展控制器

1、在application/core新建一個(gè)自己的控制器(MY_Controller)揩徊,新建的控制器繼承CI_Controller類腰鬼,可以從自己創(chuàng)建的控制器中進(jìn)行擴(kuò)展。

例如:class MY_Controller extends CI_Controller{

Public function __consreuct(){

Parent::__construct(); //調(diào)用父類的構(gòu)造方法

//登陸驗(yàn)證

//權(quán)限驗(yàn)證

}

}

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沿盅、控制器中加載模型時(shí)起別名:$this->load->model(“模型文件名”,”別名”);

加載成功后把篓,會(huì)放入超級(jí)對(duì)象的屬性中秸应,默認(rèn)屬性名是模型文件名或別名

11.6敬惦、控制器中調(diào)用模型,獲取數(shù)據(jù):$this->模型文件名->方法名();

例如:$this->load->model(“User_model”); //注意大小寫

$this->User_model->getAll(); //調(diào)用模型旭等,獲取數(shù)據(jù)

11.6.1窖铡、控制器中調(diào)用模型疗锐,獲取數(shù)據(jù):$this->別名->方法名();

例如:$this->load->model(“User_model”,”user”); //注意大小寫

$this->user->getAll(); //調(diào)用模型,獲取數(shù)據(jù)

12费彼、CI中url相關(guān)函數(shù)

12.1滑臊、加載輔助函數(shù):$this->load->helper(“url”);

配置自動(dòng)加載輔助函數(shù):在application/config/autoload.php中配置

$autoload['helper'] = array('url');

就不用寫$this->load->helper(“url”);

輔助函數(shù):

site_url(“控制器/動(dòng)作/參數(shù)”) ; //處理url及參數(shù)

在視圖中使用<?php echo site_url(“控制器/動(dòng)作/參數(shù)”)?>

base_url();//返回網(wǎng)站的根目錄(“ci/”);

13箍铲、CI中的路由與偽靜態(tài)雇卷、隱藏index.php入口文件

13.1、路由設(shè)置

在application/config/routes.php中設(shè)置/修改:

$route['default_controller'] = "welcome"; //默認(rèn)的控制器為welcome

13.2、偽靜態(tài)設(shè)置

在application/config/routes.php中設(shè)置/修改:

//正則匹配(控制器/)

$route['news/[\d]{6}/([\d\w]+)\.html'] = 'user/show/$1';

http://localhost/CI/index.php/news/201401/caolizhi66.html

將動(dòng)作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)計(jì)目錄中祭玉,創(chuàng)建一個(gè).htaccess文件,內(nèi)容如下:

<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中的分頁(yè)

$this->load->library('pagination');

1 $config['base_url'] = $url;

2 /* 分頁(yè)的基礎(chǔ) URL

3 如果你想用a脱货、b的鏈接形式,則該url應(yīng)該形式如/news/page/

4 如果鏈接是c律姨、d的形式振峻,則url應(yīng)該如/news?

5 */

6 $config['total_rows'] = $total;//記錄總數(shù),這個(gè)沒什么好說的了择份,就是你從數(shù)據(jù)庫(kù)取得記錄總數(shù)

7 $config['per_page'] = $pagesize; //每頁(yè)條數(shù)扣孟。額,這個(gè)也沒什么好說的荣赶。凤价。自己設(shè)定。默認(rèn)為10好像拔创。

8 $config['page_query_string'] = TRUE;

9 /*傳參形式利诺。開啟true則會(huì)自動(dòng)在你的url后面加上&per_page=3。(這個(gè)per_page是默認(rèn)的查詢字符剩燥,當(dāng)然你也可以用$config['query_string_segment']來自己設(shè)定)

10 因此c慢逾、d中的形式一般是為localhost/news?&per_page=2不過都一樣,沒什么影響灭红。get的per_page還是3

11 */

12 $config['first_link'] = '首頁(yè)'; // 第一頁(yè)顯示

13 $config['last_link'] = '末頁(yè)'; // 最后一頁(yè)顯示

14 $config['next_link'] = '下一頁(yè)>'; // 下一頁(yè)顯示

15 $config['prev_link'] = '<上一頁(yè)'; // 上一頁(yè)顯示

16 $config['cur_tag_open'] = '<aclass="current">'; // 當(dāng)前頁(yè)開始樣式

17 $config['cur_tag_close'] = '</a>';

18 /*當(dāng)前頁(yè)結(jié)束樣式侣滩。這些你可以自己嘗試一下。

19比如說我想讓當(dāng)前頁(yè)的分頁(yè)數(shù)字樣式好看一點(diǎn)变擒,紅色字體等君珠。你就可以在current上加上css代碼

20*/

21 $config['num_links'] = 2;//當(dāng)前連接前后顯示頁(yè)碼個(gè)數(shù)。意思就是說你當(dāng)前頁(yè)是第5頁(yè)赁项,那么你可以看到3葛躏、4、5悠菜、6舰攒、7頁(yè)。

22 $config['uri_segment']=4;

23/*這個(gè)是你在用a)悔醋、b)鏈接樣式的時(shí)候摩窃,用來判斷頁(yè)頁(yè)數(shù)。

24 比如localhost/news/page/3 這個(gè)uri_segment就要設(shè)定為3。localhost/news/title/page/3這個(gè)就要設(shè)定為4

25 */

26 $config['use_page_numbers']= TRUE;

27/*這個(gè)就是a)猾愿、b)的差別了鹦聪。開啟了,page就會(huì)表示頁(yè)數(shù)蒂秘。false就會(huì)表示記錄數(shù)

15.定義常量

? ? constants.php

? ? //自定義常量? define('GATEWAY_URL', 'http://pay.bebanks.com');

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泽本,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子姻僧,更是在濱河造成了極大的恐慌规丽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撇贺,死亡現(xiàn)場(chǎng)離奇詭異赌莺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)松嘶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門艘狭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翠订,你說我怎么就攤上這事巢音。” “怎么了尽超?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵港谊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我橙弱,道長(zhǎng)歧寺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任棘脐,我火速辦了婚禮斜筐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛀缝。我一直安慰自己顷链,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布屈梁。 她就那樣靜靜地躺著嗤练,像睡著了一般。 火紅的嫁衣襯著肌膚如雪在讶。 梳的紋絲不亂的頭發(fā)上煞抬,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音构哺,去河邊找鬼革答。 笑死战坤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的残拐。 我是一名探鬼主播途茫,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼溪食!你這毒婦竟也來了囊卜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤错沃,失蹤者是張志新(化名)和其女友劉穎边败,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捎废,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年致燥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了登疗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嫌蚤,死狀恐怖辐益,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脱吱,我是刑警寧澤智政,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站箱蝠,受9級(jí)特大地震影響续捂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宦搬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一牙瓢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧间校,春花似錦矾克、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至滓彰,卻和暖如春控妻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背揭绑。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工饼暑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓弓叛,卻偏偏與公主長(zhǎng)得像彰居,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撰筷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容