Web程序設計 課件 【ch11】PHP與MVC開發(fā)模式_第1頁
Web程序設計 課件 【ch11】PHP與MVC開發(fā)模式_第2頁
Web程序設計 課件 【ch11】PHP與MVC開發(fā)模式_第3頁
Web程序設計 課件 【ch11】PHP與MVC開發(fā)模式_第4頁
Web程序設計 課件 【ch11】PHP與MVC開發(fā)模式_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十一章Web程序設計PHP與MVC開發(fā)模式新工科建設之路·計算機類專業(yè)系列教材01MVC概述01MVC概述01MVC介紹MVC(Model-View-Controller)是軟件工程中的一種軟件架構模式,把軟件系統(tǒng)分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。MVC各部分的功能如下。模型:管理大部分業(yè)務邏輯和所有數(shù)據(jù)庫邏輯,提供了連接和操作數(shù)據(jù)庫的抽象層??刂破鳎贺撠燀憫脩粽埱?、準備數(shù)據(jù),以及決定如何展示數(shù)據(jù)。視圖:負責渲染數(shù)據(jù),通過HTML方式呈現(xiàn)給用戶。典型WebMVC流程如圖所示。01MVC概述02MVC的組成控制器負責協(xié)調整個應用程序的運轉,簡單來講,就是接收瀏覽器端的請求??刂破鹘邮沼脩舻妮斎氩⒄{用模型和視圖去完成用戶的需求,單擊Web頁面中的超鏈接或HTML表單時,控制器本身不輸出任何東西,只是接收請求并決定調用哪個模型構件去處理瀏覽器端發(fā)出的請求,然后確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。1.控制器模型的設計可以說是MVC主要的核心。MVC并沒有提供模型的設計方法,只是用來組織管理這些模型,以便模型的重構和提高其重用性。從面向對象編程來講,MVC定義了一個頂級類,確定子類有哪些是可以做的,這對開發(fā)者來說非常重要。2.模型01MVC概述02MVC的組成從用戶角度,視圖就是用戶看到的HTML頁面。從程序角度,視圖負責生成用戶界面,通常根據(jù)模型中的數(shù)據(jù)轉化成HTML輸出給用戶。視圖可以允許用戶以多種方式輸入數(shù)據(jù),但數(shù)據(jù)本身并不由視圖來處理,視圖只是用來顯示數(shù)據(jù)的。在實際應用中,可能有多個視圖訪問同一個模型。比如,在“用戶”這一模型中,就有一個視圖顯示用戶信息列表,還有管理員使用用于查看、刪除用戶的視圖,這兩個視圖同時訪問“用戶”這個模型。3.視圖02PHP開發(fā)中的模板技術02PHP開發(fā)中的模板技術01模板與模板引擎1模板模板是一組插入了HTML的PHP腳本,或者說插入了PHP腳本的HTML,通過插入的內容表示變化的數(shù)據(jù)。模板引擎模板引擎技術的核心比較簡單。只要將美工頁面(不包含任何的PHP代碼)指定為模板文件,并將這個模板文件中活動的內容,如數(shù)據(jù)庫輸出、用戶交互等部分,定義成使用特殊“定界符”包含的“變量”,然后放在模板文件中的相應位置。當用戶瀏覽時,由PHP腳本程序打開該模板文件,并將模板文件中定義的變量替換。202PHP開發(fā)中的模板技術01模板與模板引擎在Web開發(fā)中分離應用程序的業(yè)務邏輯和表現(xiàn)邏輯,是我們使用模板引擎的主要目的,其中的原因如下。?美工設計人員可以與應用程序開發(fā)人員獨立工作,因為應用的表現(xiàn)和邏輯并非密不可分地糾纏在一起。?可以使用同樣的代碼基于不同目標生成數(shù)據(jù),如生成打印的數(shù)據(jù)、生成Web頁面或生成電子數(shù)據(jù)表等。02PHP開發(fā)中的模板技術02Smarty模板引擎1Smarty模板引擎的工作原理在接收到客戶端的HttP請求之后,PHP腳本創(chuàng)建模板引擎,模板引擎讀取模板內容,并最終將PHP程序與模板合并,生成合并腳本,Smarty工作原理如圖所示。02PHP開發(fā)中的模板技術02Smarty模板引擎Smarty模板引擎的使用Smarty.class.php是整個Smarty模板的核心類,通常需要在Web應用程序目錄下建立如下目錄。①appdir/smarty/libs:

對應壓縮包下的libs目錄,存儲smarty需要的類文件。②appdir/smarty/templates_c:存儲模板文件,程序用到的模板文件都放在這里。③appdir/smarty/templates:

存儲模板屬性文件。④appdir/smarty/configs:

存儲相關配置文件。203基于MVC的PHP開發(fā)框架簡介03基于MVC的PHP開發(fā)框架簡介CodeIgniter是一個小巧但功能強大的、由PHP編寫的、基于MVC的Web應用開發(fā)框架,可以為PHP程序開發(fā)人員建立功能完善的Web應用程序。CodeIgniter最小化了模板中的程序代碼量,生成的URL非常干凈,并且對搜索引擎友好。2.ThinkPHPThinkPHP是一個快速、兼容且簡單的輕量級國產(chǎn)PHP開發(fā)框架。ThinkPHP可以支持Windows/UNIX/Linux等服務器環(huán)境,正式版本需要PHP5.0以上版本支持,支持MySQL、PgSQL、Sqlite多種數(shù)據(jù)庫和PDO擴展。ThinkPHP本身沒有特別的模塊要求,具體的應用系統(tǒng)運行環(huán)境要求視開發(fā)涉及的模塊來定。1.Codelgniter03基于MVC的PHP開發(fā)框架簡介Laravel是TaylorOtwell使用PHP語言開發(fā)的一款開源的Web應用框架。Laravel是簡潔、優(yōu)雅的框架,具有簡潔且富于表達性的語法。Laravel還為開發(fā)大型應用提供了各種強大的支持功能,包括自動驗證、路由、Session、緩存、數(shù)據(jù)庫遷移等。Laravel框架具有以下特點。①對外只提供一個入口,從而讓框架統(tǒng)一管理項目的所有請求。②采用MVC設計模式,幫助團隊更好地協(xié)同開發(fā),為項目后期的維護提供方便。③支持Composer依賴管理工具,可以為項目自動安裝依賴包。④采用ORM(ObjectRelationalMapping,對象關系映射),并支持AR(ActiveRecord,活動記錄)模式。⑤具有路由功能。3.Laravel03基于MVC的PHP開發(fā)框架簡介4.FleaPHPFleaPHP是一款優(yōu)秀的國產(chǎn)Web開發(fā)框架,致力于減少開發(fā)者創(chuàng)建Web應用程序的工作量,并降低開發(fā)難度和強度,提高開發(fā)效率。FleaPHP還有以下特點:①簡單、容易理解的MVC模型。②易于使用、高度自動化的數(shù)據(jù)庫操作。③盡可能少的配置。④自動化的數(shù)據(jù)驗證和轉義。⑤豐富的組件。⑥與Smarty模板集成。04Codelgniter框架應用04Codelgniter框架應用CodeIgniter是一個用PHP編寫的為Web開發(fā)應用程序人員提供的工具包,目標是實現(xiàn)比從零開始編寫代碼更快速地開發(fā)項目,為此提供了一套豐富的類庫來滿足通常的任.務需求,并且提供了一個簡單的接口和邏輯結構來調用這些庫。CodeIgniter可以將需要完成的任務代碼量最小化,這樣開發(fā)人員就可以把更多的精力放到項目的開發(fā)中。04Codelgniter框架應用01Codelgniter的特點從技術和架構角度,CodeIgniter按照下列目標創(chuàng)建。①動態(tài)實例化。在CodeIgniter中,組件的導入和函數(shù)的執(zhí)行只有在被要求的時候才進行,而不是在全局范圍進行。②松耦合。耦合是指一個系統(tǒng)組件之間的相關程度。組件互相依賴越少,系統(tǒng)的重用性和靈活性就越好。CodeIgniter的目標就是構建一個非常松耦合的系統(tǒng)。③組件單一性。單一是指組件有一個非常小的專注目標。在CodeIgniter中,為了達到最大的用途,每個類和它的功能都是高度自治的。04Codelgniter框架應用02安裝Codelgniter安裝CodeIgniter分為4個步驟:①解壓縮安裝包;②把CodeIgniter文件夾和里面的文件部署到服務器,通常index.php位于服務器的根目錄;③編輯application/config/config.php文件,設置基本URL;④如果需要使用數(shù)據(jù)庫,就編輯application/config/database.php,并在這個文件中設置數(shù)據(jù)庫參數(shù)。05

ThinkPHP框架的應用05ThinkPHP框架的應用01ThinkPHP的安裝ThinkPHP官網(wǎng)提供了兩個版本:ThinkPHP5.0.11核心包和ThinkPHP5.0.11完整包。其中,ThinkPHP5.0.11核心包包含運行ThinkPHP框架所需的所有代碼和一些常用的類.庫。ThinkPHP的代碼不需要任何安裝過程。只需把下載的壓縮包中的ThinkPHP文件夾解壓縮到項目指定的目錄中就可以了,如D:\WWWlhtdocs\thinkphp\。2.項目入口文件將ThinkPHP的核心代碼存儲好以后,就可以創(chuàng)建一個項目入口文件來開始一個新的項目。1.ThinkPHP的獲取與安裝05ThinkPHP框架的應用02控制器類的創(chuàng)建1控制器的模塊與操作ThinkPHP框架對控制器類的文件名有一定的規(guī)定,要求必須是<模塊名>.php。在默認情況下,項目首頁的模塊名是Index,因此在自動創(chuàng)建項目時,index.php會被自動創(chuàng)建。URL的處理ThinkPHP還提供了一些其他URL處理模式供用戶選擇。URL處理模式可以通過修改application目錄下的config.php文件來實現(xiàn)。205ThinkPHP框架的應用03模型類的創(chuàng)建1模型的定義與實例化ThinkPHP框架對模型類的文件名有一定的規(guī)定,要求文件名必須是<模型名>.php。下面創(chuàng)建一個簡單的User模型。首先創(chuàng)建一個名為user的數(shù)據(jù)表。接下來創(chuàng)建一個基于User模型的模型類,文件名為User.php。數(shù)據(jù)庫的連接與操作因為ThinkPHP的數(shù)據(jù)操作是基于模型類的,所以所有底層數(shù)據(jù)庫連接和操作都會由ThinkPHP的核心代碼自動完成,不需用戶具體操作。也就是說,該項目只需在config.php中進行數(shù)據(jù)庫配置操作。205ThinkPHP框架的應用04模板文件的編寫從前面的示例模板中可以看到,模板中的變量與PHP中的變量定義方法相同,即使用“66雙開頭的變量名。與Smarty模板類似,模板中的變量需要用一對定界符來標示。2.模板中函數(shù)的使用ThinkPHP模板的另一個強大功能就是可以直接調用PHP默認的和用戶自定義的函數(shù),其語法格式如下:1.模板中的變量05ThinkPHP框架的應用04模板文件的編寫(1)循環(huán)標簽<volist>對于通常的數(shù)據(jù)庫操作往往使用循環(huán)標簽<volist>。該標簽有兩個屬性,即name和id。name是傳入的變量名稱,id是在標簽內可以使用的代表數(shù)組中每個元素的變量數(shù)組。(2)條件判斷標簽<if>與PHP的if語句類似,在ThinkPHP的模板中也可以根據(jù)傳入的變量進行條件判斷。(3)PHP代碼標簽<php>ThinkPHP提供了一個可以直接將PHP代碼放到模板中運行的方式。用戶只需要把要執(zhí)行的PHP代碼放到{php}標簽中就可以。3.基本標簽的使用06

ThinkPHP應用實例——在線日程表06ThinkPHP應用實例——在線日程表創(chuàng)建一個數(shù)據(jù)表calendar,用來存儲日程表數(shù)據(jù),如表11-3所示,將記錄日程的具體日期、事件、具體描述和是否已經(jīng)完成。1.數(shù)據(jù)庫的設計06ThinkPHP應用實例——在線日程表數(shù)據(jù)庫創(chuàng)建好以后,還需要創(chuàng)建供用戶訪問的模板。這里的每個頁面都需要一個模板文件。主頁面將顯示所有日程,并且提供鏈接以方便用戶添加新日程,以及更新、刪除現(xiàn)有日程。添加新日程頁面需要一個簡單的表單,具體代碼如下。(1)文件名index.html(2)模板edit.html2.模板的設計06ThinkPHP應用實例—

溫馨提示

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

評論

0/150

提交評論