CI框架
一.CI介紹
小巧,快速,
天下武功,無堅不破,唯快不破。
Ci還是很受歡迎的。
學習CI還有一個好處,相比其他的一些php框架,更容易掌握。(源碼和思想)
二.CI快速入門
1.獲取與安裝
直接上官網下載http://codeigniter.org.cn/
將下載好的文件解壓打網站根目錄,
在頁面中直接訪問,輸入如http://localhost/citest
看到此界面,表示安裝成功。So easy!
2.定義自己的控制器和視圖
在編寫代碼之前,要明確,我們的代碼寫在什麽地方?
其中user_guide 一般會將其刪除
重點來關註application文件夾
(1)控制器
控制器說白了就是一個類文件,並且要繼承自CI_Controller,此時我們可以借鑒ci自己提供的welcome.php文件。
關於命名規範的問題,如果我們使用別人的框架,盡量要遵守別人制定的規範,正所謂入鄉隨俗。
- 類名的首字母應該大寫。如果名稱由多個詞組成,詞之間要用下劃線分隔。
- 類中所有其他方法的名稱應該完全小,多個單詞之間使用下劃線。
- 類文件名使用小寫,名字和類名一致。
定義hello控制器,有一個方法,index
訪問:涉及到ci的url模式
Ci支持的url模式默認為pathinfo
http://localhost/citest/index.php/hello/index
其中http://localhost/citest/index.php/ 是固定的,表示的就是入口文件
而後面的hello則表示控制器,index表示是控制器中的方法。
(2)視圖的定義
視圖,說白了就是模板文件,可以是html頁面,也可以php文件,使用什麽後綴並不重要。ci默認後綴是.php,如果模板是php文件,那麽後綴不需要寫,如果是其他後綴,必須寫上後綴,如.html
視圖文件應該放在view文件夾中
(3)在控制器中調用視圖
使用$this->load->view(視圖名
上面的操作只是簡單的將html頁面展示出來,而實際上是經常 需要在控制器中獲得數據,然後分配到視圖當中。使用load->view方法的第二個參數分配數據即可。
然後在視圖頁面,輸出數據。
Ci框架中,模板語法是怎樣的?
CI使用的原生的php語法,效率高。
在視圖中,直接使用$title輸出,而不是$data[‘title’],需要註意,CI它使用了一個extract函數,將數組變量導入到當前的符號表,所以直接使用鍵名作為變量來訪問。
3.必須清楚的幾個概念
(1)框架開發和二次開發
打個比方:買房子
買二手房,直接拎包入住。 好比是二次開發,dedecms,phpcms,echsop
買毛坯房,不能住人,自己去買各種裝修材料,請人裝修,才能入住。好比是框架開發,只提供了基礎功能和項目結構。
CI是框架,用於框架開發。
(2)MVC
M:model模型,一般是直接操作數據庫的
V:view視圖,一般指的是模板文件,比如html頁面,用於展示數據的
C:controller,控制器,扮演了交通警察的角色,接收請求,然後調用相應的模型來完成工作,獲取數據,最後分配到視圖。
CI框架也是一個基於MVC的框架。使用CI框架進行開發的時候,大部分工作就是在MVC這塊。
三.MVC完整案例
使用mvc來完成一個新聞的一組操作----增刪改查。
1.準備工作
書寫一個news控制器,
設計一張表
Ci操作數據庫
1) 數據庫相關配置,在config/database.php
2) 連接數據庫
Ci提供了專門的數據庫操作類,只需要加載該類即可。
有兩種方式:
手動載入,在需要使用數據庫操作類的地方,使用$this->load->database()即可,比如在模型中載入。
自動載入,在config/autoload.php配置文件中,autoload[‘libraries‘] 加入database即可。
3) 操作
定義news模型【在模型中連接數據庫,在控制器中加載模型】
Model_name 是模型類的名字。 類名的首字母必須大寫,其他字母小寫。
文件名應該是模型類名一致。
如何使用數據庫操作類進行操作呢?
當我們連接了數據庫之後,可以使用 $this->db 來操作數據,最常用的一個方法就是$this-db->query(sql語句)
如果直接使用query,是比較麻煩的。每次還得自己來拼湊sql語句,我們更希望有一個能夠完成自動增刪改查的這麽一個功能,CI中也提供了這麽一個類,這個類就是active recored類,也叫AR。最基礎的一組操作,如下:
- $this->db->get();
- $this->db->insert();
- $this->db->update();
- $this->db->delete();
2.完成添加新聞
在news_model中定義add_news方法完成添加操作
在控制器中,接收表單提交的數據,然後調用模型來完成對數據庫的操作。
先解決一個問題,就是在視圖中,表單的action的值該如何來寫?
這就涉及到CI的輔助函數 url 函數,
配置base_url,如下:
默認情況下,url輔助函數是沒有加載的,要使用,則需要加載,可以在配置文件中,配置自動加載,也可以在需要使用的地方手動加載。
Url輔助函數中,提供了 base_url 和 site_url的方法,
其中,base_url 的值是 在config中配置的base_url的值,如http://localhost/citest/
而site_url的值則是 base_url + index_page,如http://localhost/citest/index.php
所以,在視圖中要定義控制器的某個動作(url),使用site_url
在控制器中,定義insert 方法完成 插入操作
3.完成新聞的讀取
在news_model模型中,定義一個方法,獲取數據
然後在news控制器中,定義一個方法index,調用模型的中的方法,獲取新聞,然後分配到視圖
這部分需要自己組合,傳鍵給模板
在視圖文件 list.html中,展示新聞列表,使用的是php的原生模板語法
在瀏覽器中,輸入http://localhost/citest/index.php/news/index
結果如下:
CI框架