首頁 > 後端開發 > php教程 > CI框架簡單使用方法

CI框架簡單使用方法

WBOY
發布: 2016-07-28 08:28:57
原創
1469 人瀏覽過
  1. CodeIgniter框架
  2.  
  3. 1、回憶MVC
  4.  
  5. 1.1M:模型,提供數據,保存數據
  6. 1.2V:視圖,只負責顯示,表單form
  7. 1.3C:控制器,協調模型和視圖
  8. 1.4action:動作,是控制器中的方法,用於被瀏覽器請求
  9. :動作,是控制器中的方法,用於被瀏覽器請求
  10.  
  11. 2CI
  12. CI
  13. CI中的中的 >MVCCI簡介:CodeIgniter是一個輕量級但功能強大的是一個輕量級但功能強大的php框架,基於MVC的設計模式。提供了一套豐富的類庫
  14.  
  15. 2.1、訪問的使用的pathinfo
  16. 2.2、格式:入口檔案/控制器/動作(預設 >pathinfo格式)
  17. 2.3application
  18. application目錄:
  19.  Controllers
  20. 控制器Models
  21. Models
  22. Models
  23. ModelsModels
  24. ModelsModels
  25. ModelsModels> >
  26. Views
  27. 視圖 
  28. 2.4
  29. 、預設的控制器是welcome2.5
  30. 、預設的動作是
  31. index2.6、檔名全部小寫
  32. 33、控制器(
  33. controller
  34. ):
  35. 3.1
  36. 、不需要加上後綴,直接是類別名稱
  37. 、不需要加上後綴,直接是類別名稱.. php3.2、檔名全部小寫,例如
  38. user.
  39. user. user. user
  40. .. php(大寫的檔案名稱瀏覽器不支援)3.3、所有的控制器,直接或間接繼承自 CI_Controller類,類名首字母大寫3.4、方法名不區分大小寫 動作要求:1.必須以public必須以 2.無法下列劃線(_不能以下劃線(_開頭注意!方法名稱與類別名稱相同,會被php當做構造方法(__construct
  41.  4、視圖(view) 4.1
  42. 、在控制器中載入視圖:
  43. $this->$this->>load ->view(“user_add”);//不加裝名4.2
  44. 、在控制器中載入檢視:$this->$this-> load
  45. ->view(“user/
  46. user/user/”);//不加副檔名注意:可以多次呼叫$this->
  47. load->
  48. view(視圖);4.34.3
  49. 4.34.34.3 >、視圖中,直接使用原生php程式碼4.4、在控制器中分配變數:
  50. $this
  51. ->load->vars
  52. (“視圖中變量名”(“視圖中變量名” ,
  53. php
  54. 中變數名稱);
  55.  
  56.  
  57. >$str=abcdefg」;
  58. 」;
  59. $>->load->vars(“strstrstrstr,$str);
  60. 視圖使用:php echo $str; ?> 
  61. 4.5、在控制器中分配多個變數: 例如:$str
  62. abcd」;$list = array= arrayid
  63. ”=>”
  64. 1
  65. ”,”
  66. namename””zhangsan”,”pwd”=>”
  67. 1234
  68. ”);$data[“str”]= $str;$data[“list
  69. ”]
  70. =
  71. $list;
  72. $this
  73. ->
  74. load ->vars($data);
  75.    4.6CI框架會自行解決php中的短標籤 =?>
  76. 4.7、建議使用:php、建議使用:phpphp >foreach(
  77. $listas $key val):?>…php endforeach;?>
  78. 5 、超級對象:當前控制器對象,提供了很多屬性 
  79. 5.1
  80. $this->load屬性5.1
  81. 5.15.15.15.1
  82. 5.15.111、裝載器類的實例 system/
  83. core/Loader.php5.1.5.1.
  84. CI_
  85. 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屬性
  86. 5.2.1、裝載器類別的實例 system// core/URI.php
  87. php5. >.2CI_URI
  88. 提供的方法:提供的方法:$$this$this$this$this$this$this$this$this$this->uri->Segment(
  89. n
  90. nn用於獲取URL中的第n個參數控制器代表1,動作代表
  91. 2,值1,值1代表>3
  92. ,值
  93. 2代表為4用法1:入口檔案/控制器/動作/值1
  94. /值
  95. 2 echo $this->uri->uri->s
  96. ->(
  97. 3
  98. );
  99. //輸出值1用法2index.
  100. php
  101. /控制器/動作/6
  102. //可以直接取得;參數一定要對應正確publicfunction(function(function($id=0){echo $id;echo $id;; //輸出6}
  103.  
  104. 5.3$this->input屬性
  105. 5.3.1.1、 system/core/Input
  106. .Input.. 5.3.
  107. 2
  108. CI_InputCI_InputCI_Input提供的方法🎜> : $this
  109. ->
  110. input post('username');//$_POST["username"];//$_POST["username"]; $this
  111. ->input->server->server( 🎜>DOCUMENT_ROOT”);//$_SERVER[“DOCUMENT_ROOT”]
  112. $this ->input->server(“REMOTE_ADDRREMOTE_ADDR” >
  113. //客戶端IP
  114. $this->
  115. input
  116. ->
  117. input
  118. ->input
  119. ->
  120. input
  121. ->
  122. input->server(“SERVER_ADDR”);//伺服器端IP//伺服器端IP
  123. 注意:在視圖中,可以直接用$this來訪問超級對像中的屬性 6、存取資料庫
  124.  
  125. 6.1
  126. 6.1、修改檔案:
  127. application
  128. /config/數據🎜>6.2、裝載數據庫操作類:$this->load ->database();
  129. 載入成功後,會放入超級物件的屬性中,預設屬性名稱是db$this->dbdbdbdb
  130. db$query= $this->db->dbdb ->query
  131. (
  132. $sql);//回傳值是物件(array_fetch_object) $sql = $this->db
  133. ->
  134. db->db->db->db->db
  135. ->
  136. db-> 🎜>last_query($sql);//顯示最後一條執行的語句 6.3.
  137. 1$query=$query== this->db->
  138. escape();/此函數會確定數據類型,對字符串類型數據轉義6.4$list= $query->
  139. result();//傳回數組,數組中是一個一個的物件//返回數組,數組中是一個一個的物件 6.5$list= $query
  140. =
  141. $queryresult_array();//返回二維數組,裡面是關聯數組6.6$row= $query
  142. ->row->row->row//傳回第一條數據,直接是一個物件6.7
  143. $row
  144. $row$row
  145. = $query->row_array();
  146. //傳回第一條資料,是一個數組6.8$count= $query= $query=
  147. $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中設定:
  148. $autoload[「libraries」]=」]=」]=
  149. array(“
  150. database”);這樣就不需要 $this----
  151. -
  152. -
  153. -
  154. -----
  155. -
  156. -------- >load->database();
  157. 7.2、參數綁定$name = $this= $this=input->
  158. post(“
  159. name”);name”); $pwd = $this
  160. ->input--post(“pwd”);//使用問號綁定參數
  161. $data[0]=]=] 🎜>;$data[1]
  162. 1]1]1]1]1]1]1]
  163. > $pwd;
  164. //用二維數組傳遞值$sql =$sql =$sql =$sql >“
  165. insertinto ci_user(name, pwd) values (?,?)”;//多問號,需要傳遞索引數組
  166. $bool = $this->db->db->- query
  167. (
  168. $sql,$data);$data););//回傳值是boolean7.3、表前綴配置
  169. /config/database.
  170. php.php中設定:$db['default']['dbprefix']['dbprefix
  171. ']='ci_';
  172. $db >['default
  173. ']['swap_pre']=']
  174. =ci_';配置為一樣,程式碼中,直接寫表前綴後面的名就行了,如果以後項目表前綴發生變化,只需要修改$db['default
  175. ']['
  176. dbprefix']['dbprefix ']='new_',程式碼中
  177. ci_會自動替換為new_ 8、資料庫作業( 🎜>
  178. 模型)
  179. 8.1、設定application
  180. /
  181. database
  182. .
  183. php
  184. = TRUE;
  185. 8.2、在設定檔中,設定檔後,會自動加入8.3、找(get):get):get):
  186. get
  187. ):get >$res =
  188. $this
  189. ->
  190. db
  191. ->db->db-> >
  192. ('表名');
  193. //返回結果集對象$list =
  194. $res
  195. ->result();//傳回數組,數組中是一個的物件 $list = $res
  196. ->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”);
  197. $res = $this->db->db->db->db->->update
  198. (「資料表名」,$data,$where);
  199. //回傳結果boolean;
  200. 8.6、刪除(delete):delete):delete
  201. ):
  202. $where = array(“ididid4
  203. ”);
  204. $res
  205. = $this ->db
  206. ->
  207. dalete
  208. (「資料表名」,
  209. $where);//回傳結果boolean; 99 AR的連貫操作
  210.  
  211. 9.19.19.1
  212. 9.19.19.1$res= $this->
  213. db
  214. ->db->db->db
  215. ->
  216. db->db->db->("id,name"
  217. )
  218. //找到的欄位->
  219. ->
  220. ->->->->->from(
  221. "user"
  222. )//資料表名->
  223. where(
  224. "id >",3
  225. )//條件 id與>之間必須要有空格->order_by("id desc")//排序->limit(limit(
  226. 3,1)//分頁;表示跳過1條,取3條,與tp相反 ->get();//取得資料//取得資料$ list = $res
  227. ->result_array();( 🎜>9.2where()條件條件符:「>」、「>=」、 「1、只有單一條件時數:9.2.
  228. 1
  229. 1$res = $this->db->whereget();例如:$res例如:
  230. $res
  231. 例如:$res例如:$res
  232. 例如:
  233. $res例如:$res例如:$res = $this->db->where(“name”,”admin”)->get();
  234. //自動會加上“=”9.2.2$res= $this->db->db->(“字段=”,”值”)->get();();例如:$res= $this
  235. ->db->db->-db->--where(“name=”,”admin”)->admin”)-> get
  236. ();
  237. //必須要有空格2、有多個條件時:用
  238. 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連接查詢
  239. 9.3.1、預設為左查詢(left join on
  240. $this-$this->- db->
  241. select
  242. (「欄位」)->
  243. ->(「資料表名」)->join('連接表'
  244. ,'連接條件')->get ();    
  245. //預設為左詢問(left join … on) 例如:$this->db
  246. ->select(“*”)->from
  247. ->from("user”)->join('category ', user.id
  248. = category
=
  1. categoryid
  2. )//預設為左查詢(left join )
  3. ->get();
  4. 9.3.2、透過join()第三個可透過join()第三個可透過join()第三個可透過join()第三個可選參數選擇連接,可選參數包括:left、 right、outer、 inner、left outer、right outer
  5. 例如:
  6. $ this->db->select(“*”)
  7. ->from(“user”)
  8. ->join(“category ”, “user.id = category.id”,”left”)//透過第三個參數指定
  9. ->get();
  10. 10、擴充CI控制器
  11.  
  12. 10.1、擴充控制器
  13. 10.1、擴充控制器
  14. 1.在application/core新建一個自己的控制器(MY_Controller),新建的控制器繼承CI_Controller類,可以從自己建立的控制器中進行擴充。
  15. 例如:class MY_Controller extends CI_Controller{
  16. Public function __consreuct(){
  17. Public function __consreuct(){
  18. Public function __consreuct(){
  19. ::__construct(); //呼叫父類別的建構方法
  20. //登陸驗證//權限驗證}}2、讓welcome.php繼承自己創建的控制器(MY_Controller),MY_Controller),間接繼承CI_Controller。
  21. 3、控制器前綴可以修改
  22. 在application/config/config.php中修改:
  23. $config['subclass_prefix'] = 'MY_'; 
  24. 11、模型(model)
  25. 11.1、模型檔案命名:user_model.php 、category_model.php,檔案名稱小寫
  26. 建議:模型檔案名稱使用_model為後綴,防止與控制器類別名稱衝突!
  27. 11.2、所有的模型,直接或間接繼承自CI_Model類,類名首字母大寫
  28. 11.3、裡面創建所需要的方法:getAll()…
  29. 11.4、控制器中載入模型:$this->load->model(“模型檔名”); //不加字尾
  30. 11.5、控制器中載入模型時起別名:$this->load->model(“模型檔名”,”別名”);
  31. 載入成功後,會放入超級物件的屬性中,預設屬性名稱是模型檔案名稱或別名
  32. 11.6、控制器中呼叫模型,取得資料:$this- >模型檔名->方法名稱();
  33. 例如:$this->load->model(“User_model”); //注意大小寫
  34. $this->User_model->getAll(); //呼叫模型,取得資料
  35. 11.6.1、控制器中呼叫模型,取得資料:$ this->別名->方法名稱();
  36. 例如:$this->load->model(“User_model”,”user”); //注意大小寫
  37. $this->user->getAll(); //呼叫模型,取得資料
  38. 12、CI中url相關函數
  39. 12.1、載入輔助函數:$this->load->helper(“url”);
  40. 設定自動載入輔助函數:在application/ config/autoload.php中配置
  41. $autoload['helper'] = array('url');
  42. 就不用寫$this->load->helper(“url”);
  43. 輔助函數:
  44. site_url(“控制器/動作/參數”) ; //處理url及參數
  45. 在視圖中使用 php echo site_url(“控制器/動作/參數”)?>
  46. base_url();//返回網站的根目錄(“ci/”);
  47. 13、CI中的路由與偽靜態、隱藏index.php入口檔案
  48. 13.1、路由設定
  49.  
  50. 在application/config/routes.php中設置/修改:
  51.  
  52. $route['default_controller'] = "welcome"; //默認的控制器為welcome
  53.  
  54. 13.2、偽靜態設定
  55. 在application/config/routes.php中設定/修改:
  56. //正則匹配(控制器/)
  57. $route['news/[d]{6}/([dw]+).html '] = 'user/show/$1
  58. ';
  59. $1
  60. ';
  61. $1
  62. ';
  63. http://localhost/CI/index.php/news/201401/caolizhi66.html
  64. 將動作news中的參數路由到user/show/ $1
  65.  
  66. 13.3、隱藏入口文件index.php
  67. 開啟🎜>13.3. apache設定檔:LoadModule rewrite_module modules/mod_rewrite.so
  68. 13.3.2、在入口檔案統計目錄中,建立一個.htaccess文件,內容如下:
  69. RewriteEngine on //啟用偽靜態
  70. RewQUEfond % //符合不存在的目錄
  71. RewriteCond %{REQUEST_FILENAME} !-f //符合不存在的檔案
  72. Rewrite *)$ index.php/$1 [QSA,PT,L] //重寫規則
  73.  
  74. 這樣就不用寫入口文件index.php了
  75.  
  76. 14、CI中的分頁
  77. $this->load->library('pagination
  78. ');
  79. ');
  80. ');
  81. 1 $config['
  82. base_url
  83. '] = $url;
  84. 2 /* 分頁的基礎L2 /* 分頁的基礎L
  85. 3 如果你想用a、b的連結形式,則該url應該形式如/news/page/ 4 如果連結是c、d的形式,則url應該如/news? 5 */ 6 $config['total_rows'] = $total;//記錄總數,這個沒什麼好說的了,就是你從資料庫取得記錄總數7 $config['per_page '] = $pagesize; //每頁條數。額,這個也沒什麼好說的。 。自己設定。預設為10好像。
  86. 8 $config['page_query_string'] = TRUE;
  87. /傳參形式。開啟true則會自動在你的url後面加上&per_page=3。 (這個per_page是預設的查詢字符,當然也可以用$config['query_string_segment']自己設定)
  88. 10 因此c、d中的形式一般是為localhost/news?&per_page=2不過都一樣,沒什麼影響。 get的per_page還是3
  89. 11 */
  90. 12 $config['first_link12 $config['first_link首頁'; // 第一頁顯示
  91. 13 $config['last_link'] = '末頁'; // 最後一頁顯示
  92. 14 $config['next_link'] = '下一頁'] = '下一頁
  93. >'; // 下一頁顯示15 $config['prev_link'] = '
  94. '] = '上一頁'; // 上一頁顯示16 $config['cur_tag_open'] = '
  95. aclass="current">'; // 目前頁面開始樣式17 $config['cur_tag_close'] = ''] = '
  96. '] = '
  97. /a
  98. >
  99. ';>';
  100. 18 /*目前頁結束樣式。這些你可以自己試試看。 19比如說我想讓當前頁的分頁數字樣式好看一點,紅色字體等。你就可以在current上加上css代碼代碼20
  101. */21 $config['21 $config[''] = 2;//目前連線前後顯示頁碼個數。意思是說你目前頁是第5頁,那你可以看到3
  102. 4
  103. 56
  104. 7
  105. 7頁。 22 $config[' uri_segment']=
  106. 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教程有興趣的朋友有所幫助。
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板