CodeIgniter框架.ppt_第1頁
CodeIgniter框架.ppt_第2頁
CodeIgniter框架.ppt_第3頁
CodeIgniter框架.ppt_第4頁
CodeIgniter框架.ppt_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、CodeIgniter框架,一、CI簡單介紹,如果. 你不喜歡復(fù)雜,熱愛簡單。 你想要一個(gè)小巧的框架。 你需要廣泛兼容標(biāo)準(zhǔn)主機(jī)上的各種 PHP 版本和配置。 你想要一個(gè)幾乎只需 0 配置的框架。 你不希望被迫學(xué)習(xí)一門模板語言(雖然可以選擇你喜歡的模板解析器)。 那么 CodeIgniter 就是你所需要的 CodeIgniter 是一個(gè)小巧但功能強(qiáng)大的 PHP 框架 CI的特點(diǎn): 簡單 免費(fèi) MVC(關(guān)鍵),一、CI簡單介紹,2013年最棒的4個(gè)PHP框架,二、下載并安裝CI,下載地址: 最新版本是2.1.4 安裝步驟: 解壓縮安裝包。 把 CodeIgniter 文件夾和里面的文件上傳到你的

2、服務(wù)器。 用任何文本編輯器打開 application/config/config.php 去設(shè)置你的網(wǎng)站根 URL。 如果你打算使用數(shù)據(jù)庫,打開 application/config/database.php 文件,設(shè)置你的數(shù)據(jù)庫參數(shù)。,三、網(wǎng)站結(jié)構(gòu)及業(yè)務(wù)流程,安裝 CI 文件后,我們來看一下目錄結(jié)構(gòu) 分析各文件的功能,三、網(wǎng)站結(jié)構(gòu)及業(yè)務(wù)流程,應(yīng)用程序流程圖 Question:默認(rèn)首頁是如何顯示出來的?,四、控制器,控制器是應(yīng)用程序的心臟,因?yàn)樗鼈儧Q定如何處理 HTTP 請(qǐng)求。 簡而言之,一個(gè)控制器就是一個(gè)類文件,是以一種能夠和 URI 關(guān)聯(lián)在一起的方式來命名的。 假設(shè)這個(gè) URI: Cod

3、eIgniter 將嘗試尋找并裝載一個(gè)名為 blog.php 的控制器。 編寫自己的控制器 命名規(guī)范 確保你的控制器擴(kuò)展(繼承)自父控制器類,以便它能夠繼承其所有的方法 URI 的第二部分是用來決定調(diào)用控制器中哪個(gè)方法的,如果為空,則默認(rèn)載入 “index” 方法。,五、URL模式,默認(rèn)情況下,CodeIgniter 中的 URL 使用基于段的方法: 第一段表示調(diào)用控制器類。 第二段表示調(diào)用類中的函數(shù)或方法。 第三及更多的段表示的是傳遞給控制器的參數(shù),如 ID 或其它各種變量。 啟用查詢字符串 在一些情況下你需要在 URL 中使用查詢字符串: index.php?c=products 其中$d

4、ata是要傳入視圖的動(dòng)態(tài)數(shù)據(jù)。 模板語法,CI采用原生的模板語法,也就是直接在頁面中使用php標(biāo)簽處理動(dòng)態(tài)數(shù)據(jù)。 載入多個(gè)視圖,在控制器中使用多個(gè)load-view 即可,如果每個(gè)視圖都傳遞動(dòng)態(tài)數(shù)據(jù),只需在第一個(gè)視圖傳入數(shù)據(jù)。,七、模型,模型是專門用來和數(shù)據(jù)庫打交道的PHP類。 模型類文件存放在 application/models/ 文件夾。 定義模型 繼承基本模型類CI_Model 定義相應(yīng)的方法 載入模型 手動(dòng)載入,在控制器中載入模型,$this-load-model(模型名) 自動(dòng)載入,在config/autoload.php中配置,八、數(shù)據(jù)庫操作,1. 數(shù)據(jù)庫配置 applicati

5、on/config/database.php 2. 連接數(shù)據(jù)庫 手動(dòng)連接:$this-load-database() 自動(dòng)連接:在autoload.php中設(shè)定兩種 3. 數(shù)據(jù)庫操作 數(shù)據(jù)庫連接之后,使用$this-db-query(sql語句)來執(zhí)行查詢 $query = $this-db-query(sql語句),八、數(shù)據(jù)庫操作,返回結(jié)果集 result() result_array() row() row_array(),成功返回true 失敗返回false,讀操作輔助函數(shù):$query-num_rows(),$query-num_fields(), $query-free_result

6、() 寫操作輔助函數(shù):$this-db-insert_id(),$this-db-affected_rows() 其它輔助函數(shù):$this-db-count_all(表名), $this-db-last_query(),$this-db-insert_string(), $this-db-update_string(),八、數(shù)據(jù)庫操作-Active Record類,AR數(shù)據(jù)庫模式以較少的程序代碼來實(shí)現(xiàn)信息在數(shù)據(jù)庫中的獲取,插入,更改。 AR允許你創(chuàng)建獨(dú)立的數(shù)據(jù)庫應(yīng)用程序,因?yàn)椴樵冋Z法是由數(shù)據(jù)庫適配器來產(chǎn)生的。 AR可以進(jìn)行更安全的查詢,因?yàn)橄到y(tǒng)會(huì)自動(dòng)的對(duì)所有的輸入值進(jìn)行轉(zhuǎn)義。,$this-db

7、-get(); $this-db-select(); $this-db-from(); $this-db-where(); $this-db-group_by(); $this-db-having(); $this-db-order_by(); $this-db-limit(); 支持鏈?zhǔn)秸Z法,$this-db-insert(); $this-db-update(); $this-db-delete();,九、部署應(yīng)用程序,思考:如何在一個(gè) CodeIgniter 下運(yùn)行多個(gè)應(yīng)用程序? 方案1,共享同一個(gè) CodeIgniter,創(chuàng)建多個(gè)應(yīng)用 方案2,使用分組功能,將控制器和視圖分開 方案3,

8、擴(kuò)展核心類 擴(kuò)展核心類 擴(kuò)展的類必須申明由母類擴(kuò)展而來。 新擴(kuò)展的類所在的文件必須以 MY_ 為前綴。 所有原始CodeIgniter類庫以 CI_ 作為前綴,所以請(qǐng)勿以CI_作為你自己的前綴.所有的擴(kuò)展核心類必須放到core目錄中! 擴(kuò)展loader類和controller,十、CI輔助函數(shù),輔助函數(shù)是幫助我們完成特定任務(wù)的函數(shù)。 每個(gè)輔助函數(shù)文件僅僅是一些函數(shù)的集合(注意不是用類的方式來實(shí)現(xiàn)的)。 每個(gè)輔助函數(shù)處理一個(gè)特定的任務(wù),并且不必依靠其他函數(shù)。 載入輔助函數(shù) 手動(dòng)載入:$this-load-helper(url) 或 $this-load-helper( array(helper1

9、, helper2, helper3) ); 自動(dòng)載入:application/config/autoload.php中配置 使用輔助函數(shù) 直接使用即可,如URL輔助函數(shù)、CAPTCHA輔助函數(shù) 擴(kuò)展helpers,十、CI輔助函數(shù)之URL函數(shù),URL 輔助函數(shù)文件包含一些在處理 URL 中很有用的函數(shù) base_url() :返回在 config.php 中設(shè)定的 base_url site_url() :根 URL 指 config.php 中指定的 base_url 和 index_page anchor() :創(chuàng)建基于你的本地站點(diǎn)URL的標(biāo)準(zhǔn)錨鏈接 redirect(): 跳轉(zhuǎn)函數(shù),十

10、、CI輔助函數(shù)之CAPTCHA函數(shù),驗(yàn)證碼輔助函數(shù)用來生成圖片驗(yàn)證碼 create_captcha($data) 根據(jù)你指定的一系列參數(shù)創(chuàng)建驗(yàn)證碼圖像, 返回值是一個(gè)包含此圖像數(shù)據(jù)的數(shù)組。 驗(yàn)證碼輔助函數(shù)必須需要GD庫. 只有 img_path 和 img_url 參數(shù)是必須的. captcha 目錄必須可寫(666, or 777) 擴(kuò)展CAPTCHA函數(shù),注意: 要手動(dòng)創(chuàng)建data/captcha目錄, 基于項(xiàng)目根目錄,十一、CI類庫,所有的類庫文件存放在system/libraries 文件夾 載入類庫 $this-load-library(classname); $this-load-

11、library(array(email, table); 或者在autoload.php中配置以自動(dòng)載入 使用類庫 $this-classname-方法() 創(chuàng)建自己的類庫 可以創(chuàng)建全新的類庫 可以擴(kuò)展原始類庫 可以替換原始類庫,注意兩點(diǎn): 初始化CodeIgniter資源 在初始化自定義類時(shí)傳遞參數(shù),十一、CI類庫之裝載類,裝載,顧名思義,是用來裝載元素。這些元素可以是庫 (類) 視圖文件, 輔助函數(shù), 模型, 或者是你自己的文件。 提示: 這個(gè)類是由系統(tǒng)初始化的,所以,沒有必要自己手動(dòng)初始化。 有了這個(gè)類之后,我們就可以裝載各種文件了 $this-load-library(); $this

12、-load-view(); $this-load-model(); $this-load-database(); $this-load-helper(); $this-load-config();,十一、CI類庫之表單驗(yàn)證類,CodeIgniter 提供了一個(gè)全面的表單驗(yàn)證和數(shù)據(jù)預(yù)處理類以幫助縮減你所寫的代碼。,十一、CI類庫之輸入類,輸入類有兩個(gè)目的: 為了安全,預(yù)處理輸入數(shù)據(jù)。 提供helper的一些方法,取得輸入數(shù)據(jù),并預(yù)處理輸入數(shù)據(jù)。 說明: 系統(tǒng)自動(dòng)加載此類,不用手動(dòng)加載。,十一、CI類庫之文件上傳類,CodeIgniter 的文件上傳類允許文件被上傳。您可以設(shè)置指定上傳某類型的文件

13、及指定大小的文件。,十一、CI類庫之圖像處理類,CodeIgniter 的圖像處理類可以使你完成以下的操作: 調(diào)整圖像大小 創(chuàng)建縮略圖 圖像裁剪 圖像旋轉(zhuǎn) 添加圖像水印,十一、CI類庫之分頁類,CodeIgniter 的分頁類是一個(gè)非常簡單,并且 100% 用戶自定義的類。,十二、CI超級(jí)對(duì)象,CI構(gòu)建一個(gè)“超級(jí)對(duì)象”:它把你的整個(gè)程序當(dāng)作一個(gè)大的對(duì)象。 在config.php中開啟日志以查看 分析源碼,探究超級(jí)對(duì)象形成過程,Controller.php,CodeIgniter.php,十三、緩存之頁面緩存,頁面緩存 CI支持每個(gè)頁面單獨(dú)緩存,而且可以設(shè)置緩存更新時(shí)間。當(dāng)一個(gè)網(wǎng)頁第一次被加載的

14、時(shí)候,緩存文件將被保存到application/cache文件夾。下次訪問的時(shí)候,系統(tǒng)就會(huì)直接讀取緩存文件,然后返回給用戶的瀏覽器。如果緩存文件過期,它將被刪除并重新生成。 啟動(dòng)緩存 在控制器(controller)的方法(function)內(nèi)添加如下代碼:$this-output-cache(n); 其中 n 是你希望緩存更新的 分鐘 數(shù)??梢允褂?m/60 來精確到秒,例如 1/60 ,則是精確到 1秒 刪除緩存 如果你不再想使用緩存,僅需將上面的代碼從你的controller里面刪除即可。,此處使用了輸出類output,十三、緩存之?dāng)?shù)據(jù)庫緩存,數(shù)據(jù)緩存 數(shù)據(jù)庫查詢結(jié)果保存在文本文件中以減

15、少數(shù)據(jù)庫訪問。 首次被加載時(shí),數(shù)據(jù)庫查詢的結(jié)果對(duì)象將會(huì)被序列化并保存在你服務(wù)器的文本文件中。而頁面再次被加載時(shí)緩存文件將會(huì)替代數(shù)據(jù)庫查詢。如此,在被緩存的頁面中,你的數(shù)據(jù)庫使用率會(huì)降至0。 只有讀類型(SELECT) 查詢會(huì)被緩存,因?yàn)橹挥羞@種查詢會(huì)產(chǎn)生結(jié)果集。 激活緩存 在服務(wù)器上創(chuàng)建一個(gè)可寫的目錄以便保存緩存文件。 在文件application/config/database.php中$dbxxxxcachedir 設(shè)置其目錄。 激活緩存特性,可以在文件 application/config/database.php 中設(shè)置全局選項(xiàng)$dbxxxxcache_on=TRUE,或使用$this

16、-db-cache_on() / $this-db-cache_off()手動(dòng)設(shè)置 刪除緩存 $this-db-cache_delete() 和 $this-db-cache_delete_all(),十四、安全,不安全因素: 通過url惡意訪問 sql注入 xss攻擊 CodeIgniter 嚴(yán)格限制 URI 中所能包含的字符,以此幫助你設(shè)計(jì)的程序減少被惡意數(shù)據(jù)入侵的可能。 在接收任何數(shù)據(jù)到你的程序之前,不管是表單提交的 POST 數(shù)據(jù)、COOKIE 數(shù)據(jù)、GET數(shù)據(jù),都推薦你實(shí)踐下面的三個(gè)步驟: 過濾不良數(shù)據(jù) (XSS 過濾) 驗(yàn)證數(shù)據(jù)以確保符合正確的類型、長度、大小等(表單驗(yàn)證) 在提交

17、數(shù)據(jù)到你的數(shù)據(jù)庫之前將其轉(zhuǎn)換 (插入數(shù)據(jù)庫之前轉(zhuǎn)義所有數(shù)據(jù)),十五、錯(cuò)誤及調(diào)試,CodeIgniter將允許你建立自己的錯(cuò)誤報(bào)告 show_error() show_404() CodeIgniter會(huì)在找不到目標(biāo)控制器情況下,自動(dòng)顯示404消息。 log_message() 使用分析器將在頁面下方顯示基準(zhǔn)測(cè)試結(jié)果,運(yùn)行過的 SQL 語句,以及 $_POST 數(shù)據(jù)。這些信息有助于開發(fā)過程中的調(diào)試和優(yōu)化。 該分析器無須手動(dòng)初始化,只需按照下面的方式激活,他將被輸出類自動(dòng)裝載。 在控制器中設(shè)置以下方法以激活該分析器 $this-output-enable_profiler(TRUE);激活后將產(chǎn)生一個(gè)報(bào)告并插入您的頁面底部,十六、鉤子,CodeIgniter 的鉤子功能使得您可以在不修改系統(tǒng)核心文件的基礎(chǔ)上來改變或增加系統(tǒng)的核心運(yùn)行功能。 啟用鉤子 在 application/config/config.php 文件中設(shè)定: $configenable_hooks = TRUE; 定義鉤子 鉤子是在 application/config/hooks.php 文件中定義的 掛鉤點(diǎn) pre_system pre_controller post_controller_con

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論