1. 程式人生 > >CI框架

CI框架

ins 變量 繼承 結果 -1 拎包入住 core 類名 htm

.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

技術分享

訪問:涉及到ciurl模式

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文件,需要帶上後綴】

技術分享

上面的操作只是簡單的將html頁面展示出來,而實際上是經常 需要在控制器中獲得數據,然後分配到視圖當中。使用load->view方法的第二個參數分配數據即可。

技術分享

然後在視圖頁面,輸出數據。

技術分享

Ci框架中,模板語法是怎樣的?

CI使用的原生的php語法,效率高。

在視圖中,直接使用$title輸出,而不是$data[‘title’],需要註意,CI它使用了一個extract函數,將數組變量導入到當前的符號表,所以直接使用鍵名作為變量來訪問。

3.必須清楚的幾個概念

1)框架開發和二次開發

打個比方:買房子

買二手房,直接拎包入住。 好比是二次開發,dedecmsphpcmsechsop

買毛坯房,不能住人,自己去買各種裝修材料,請人裝修,才能入住。好比是框架開發,只提供了基礎功能和項目結構。

CI是框架,用於框架開發。

2MVC

Mmodel模型,一般是直接操作數據庫的

Vview視圖,一般指的是模板文件,比如html頁面,用於展示數據的

Ccontroller,控制器,扮演了交通警察的角色,接收請求,然後調用相應的模型來完成工作,獲取數據,最後分配到視圖。

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框架