《PHP Web應用開發案例教程》630-9(阮云蘭)教案 第26課 PHP框架_第1頁
《PHP Web應用開發案例教程》630-9(阮云蘭)教案 第26課 PHP框架_第2頁
《PHP Web應用開發案例教程》630-9(阮云蘭)教案 第26課 PHP框架_第3頁
《PHP Web應用開發案例教程》630-9(阮云蘭)教案 第26課 PHP框架_第4頁
《PHP Web應用開發案例教程》630-9(阮云蘭)教案 第26課 PHP框架_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

PAGE10PAGE10PAGE9PAGE9

課題PHP框架課時2課時(90min)教學目標知識技能目標:(1)了解PHP框架的特點、主流PHP框架及MVC的概念(2)掌握ThinkPHP框架的獲取及應用方法素質目標:(1)了解國產PHP框架,激發學習興趣,增強創新意識(2)幫助學生樹立履行時代使命的責任擔當,激起學生報效祖國的理想情懷教學重難點教學重點:PHP框架的特點、主流PHP框架及MVC的概念教學難點:ThinkPHP框架的獲取及應用方法教學方法案例分析法、問答法、討論法、講授法、實踐法教學用具電腦、投影儀、多媒體課件、教材教學設計第1節課:→→→傳授新知(38min)第2節課:→傳授新知(20min)→課堂實訓(15min)→課堂小結(3min)→作業布置(2min)教學過程主要教學內容及步驟設計意圖第一節課課前任務【教師】布置課前任務,和學生負責人取得聯系,讓其提醒同學通過文旌課堂APP或其他學習軟件,預習本節課要學習的知識【學生】完成課前任務通過課前任務,使學生預習本節課要學習的知識,增加學生的學習興趣考勤(2min)【教師】使用文旌課堂APP進行簽到【學生】班干部報請假人員及原因培養學生的組織紀律性,掌握學生的出勤情況問題導入(5min)【教師】提出以下問題:什么是PHP框架?通過問題導入,引導學生主動思考,激發學生的學習興趣傳授新知(38min)【教師】通過學生的回答引入要講的知識,講解PHP框架的特點,主流PHP框架,MVC的概念,以及ThinkPHP的基礎知識14.1PHP框架簡介有一定經驗的PHP開發者都知道,擁有一個強大的框架可以讓開發工作變得更加快捷、安全和有效。框架是程序結構代碼的集合,而不是業務邏輯代碼。該集合是按照一定標準組成的功能體系(體系有很多設計模式,MVC是比較常見的一種模式),其中包含了很多類、函數和功能類包。14.1.1PHP框架的特點可以說,PHP框架是一個PHP應用程序的半成品。它提供的不僅僅是一組工具類,而是可在應用程序之間共享且可復用的公共且一致的結構。使用PHP框架不僅有助于創建更為穩定的程序,還有助于減少開發者重復編寫代碼的勞動,能有效節約開發時間。總的來說,PHP框架具有以下特點:加速開發過程:PHP框架內置了預建的模塊,免去了冗長又令人厭煩的編程工作。這樣開發者就能夠把時間花在開發實際程序上,而不是每一次都要為每一個項目重建基礎模塊。PHP框架背后的思想稱為模型—視圖—控制器(MVC)。在MVC中,模型負責數據,視圖負責表現,控制器則是程序主體或者說是負責業務邏輯。從本質上說,MVC拆分了一個程序的開發過程,這樣就可以修改獨立的每一部分,而其他部分不受影響。這使得編寫PHP代碼變得更為簡單快捷。14.1.3節將會詳細介紹MVC的概念。成熟穩健性:大多數初級開發者往往容易因為PHP的簡單性,而寫出低質量的代碼。這些PHP程序可能在大多數時間內仍能正常工作,但代碼中可能留下了安全漏洞,易受攻擊。而PHP框架對一些基本的細節及安全性等做了處理,在此基礎上開發出來的PHP代碼更加安全可靠。可擴展性:PHP框架往往有著龐大的支持團隊,使用者眾多,并且是不斷升級的,使用者可以直接享受別人升級代碼帶來的好處。PHP框架也方便地支持用戶根據實際業務需求擴展自己特有的模塊。14.1.2主流PHP框架簡介一直以來,PHP框架被廣泛應用。這些框架,多半是基于MVC架構模式,也有基于事件驅動模式的,下面列舉幾個應用比較廣泛的框架。ThinkPHP:是一個快速、兼容、簡單、并且功能豐富的輕量級國產PHP開發框架,遵循Apache2開源協議發布,從Struts結構移植過來,并做了改進和完善,同時也借鑒了國外很多優秀的框架和模式,使用面向對象的開發結構和MVC模式。本身具有很多的原創特性,并且倡導大道至簡,開發由我的理念,意在用最少的代碼完成更多的功能。本章主要以該框架為例進行介紹。ZendFramework:ZendFramework(ZF)是用PHP5.3及更高版本來開發Web程序和服務的開源框架。ZF用100%面向對象編碼實現,其組件結構獨一無二,每個組件幾乎不依靠其他組件。這樣的松耦合結構可以讓開發者獨立使用組件。ZF在開發社區中有大量的追隨者,掌握它需要一些PHP的額外知識。?【教師】通過多媒體展示“Laravel框架標志”圖片,并進行介紹Laravel:是一個簡潔易擴展的PHPWeb開發框架,可以通過簡潔的語法,開發出很棒的Web應用,其標志如圖所示。Laravel擁有富有表現力的語法、高質量的文檔、豐富的擴展包,被稱為“巨匠級PHP開發框架”。Laravel是完全開源的,所有代碼都可以從GitHub上獲取。GitHub是一個面向開源及私有軟件項目的托管平臺,因其只支持Git作為唯一的版本庫格式進行托管,而得名GitHub。GitHub除Git代碼倉庫托管及基本的Web管理界面外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。目前,其注冊用戶已超過350萬,托管版本數量也非常多,其中不乏知名開源項目RubyonRails、jQuery、python等。CakePHP:基于與RubyonRails同樣的原則而設計,十分注重快速開發,這使得它成為一個非常好的用于RAD(rapidapplicationdevelop,快速應用開發)的開發框架。快速增長的支持系統,簡潔性和可測量性,使得CakePHP無論對于初學者,還是職業PHP開發者,都是很好的選擇。?【教師】講解“科技普惠”的內容,并進行課堂思政PHP開發最好有一個框架,尤其是團隊開發,這樣易于協作,也便于產品后期的維護。常見的國產PHP框架除了ThinkPHP外,還有SpeedPHP、G-framework、84PHP等。SpeedPHP是一款功能全面的PHP框架,以“快速開發、快速學習、快速執行”為理念,速度飛快,上手容易,是最適合初學者的PHP框架。G-framework是一款免費開源、快速、簡單的面向對象的輕量級PHP框架,遵循Apache2開源協議發布。84PHP是一款力求在性能指標與簡潔度之間達到平衡的PHP框架,引入了諸多新穎的設計理念,如高內聚的可插拔模塊設計、簡潔的文件結構、快捷傳參、完善詳細的報錯信息等。14.1.3MVC大部分PHP框架都是基于MVC架構模式,為便于理解,在具體介紹框架之前,此處先來簡單認識一下MVC。MVC全名是modelviewcontroller,是模型(model)-視圖(view)-控制器(controller)的縮寫。它是一種設計創建Web應用程序的框架模式,強制性地將應用程序的輸入、處理和輸出分開。Model(模型)表示應用程序核心(如數據庫記錄列表),是應用程序中用于處理應用程序數據邏輯的部分,通常負責在數據庫中存取數據。View(視圖)是用戶看到并與之交互的界面,是應用程序中處理數據(數據庫記錄)顯示的部分,通常依據模型數據創建。Controller(控制器)是應用程序中處理用戶交互的部分,通常負責從視圖讀取數據,控制用戶輸入,并向模型發送數據。使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。例如,一批統計數據可以分別用柱狀圖和餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。MVC模式同時提供了對HTML、CSS和JavaScript的完全控制。MVC分層有助于管理復雜的應用程序,因為開發者可以在一段時間內專注于一個方面。例如,可以在不依賴業務邏輯的情況下專注于視圖設計,同時也讓應用程序的測試更加容易。MVC分層還簡化了分組開發,不同的開發人員可同時開發視圖、控制器邏輯和數據邏輯。14.2ThinkPHP基礎作為一個整體開發解決方案,ThinkPHP能夠解決應用開發中的大多數需要,因為其自身包含了底層架構、兼容處理、基類庫、數據庫訪問層、模板引擎、緩存機制、插件機制、角色認證、表單處理等常用組件,并且對于跨版本、跨平臺和跨數據庫移植都比較方便。14.2.1ThinkPHP框架的特點ThinkPHP是目前國內應用最多的PHP框架之一,其主要特點如下:視圖模型:可以輕松、動態地創建數據庫視圖,輕松實現多表查詢。關聯模型:可以簡單、靈活地完成多表的關聯操作。模板引擎:系統內建了一款卓越的基于XML的編譯型模板引擎,支持兩種類型的模板標簽,融合了Smarty和JSP標簽庫的思想,支持標簽庫擴展。通過驅動還可以支持Smarty,EaseTemplate,TemplateLite等第三方模板引擎。緩存機制:系統支持包括File、APC、Db、Memcache等在內的多種動態數據緩存類型,以及可定制的靜態緩存規則,并提供了快捷方法進行存取操作。類庫導入:ThinkPHP采用基于類庫包和命名空間的方式導入類庫,讓類庫導入看起來更加簡單清晰,并且還支持沖突檢測和別名導入。為方便項目的跨平臺移植,系統還可以嚴格檢查加載文件的大小寫。擴展機制:系統支持包括類庫擴展、驅動擴展、應用擴展、模型擴展、控制器擴展、標簽庫擴展等在內的強大靈活的擴展機制,讓用戶不再受限于核心的不足和無所適從,隨心DIY自己的框架和擴展應用。多URL模式:系統支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的URL方式,同時支持不同的服務器和運行模式的部署。配合URL路由功能,可以隨心所欲地構建需要的URL地址和進行SEO優化工作。編譯機制:獨創的核心編譯和項目的動態編譯機制,能有效減少OOP(objectorientedprogramming,面向對象編程)開發中文件加載的性能開銷。查詢語言:內建豐富的查詢機制,包括組合查詢、復合查詢、區間查詢、統計查詢、定位查詢、動態查詢和原生查詢,讓數據查詢簡單高效。動態模型:無須創建任何對應的模型類,輕松完成CURD操作,支持多種模型之間的動態切換。CURD是一個數據庫技術中的縮寫詞,C代表創建(create)、U代表更新(update)、R代表讀取(read),D代表刪除(delete)。CURD定義了用于處理數據的基本操作。

CURD在具體的應用中不一定非要使用create,update,read和delete字樣的方法。例如,ThinkPHP就是使用add()、save()、select()和delete()方法表示模型的CURD操作,他們完成的功能是一樣的。分組模塊:不用擔心大項目的分工協調和部署問題,分組模塊可以有效解決跨項目的難題。Ajax支持:內置Ajax數據返回方法,支持數據以JSON、XML和EVAL格式返回客戶端,并且系統不綁定任何Ajax類庫,可隨意使用自己熟悉的Ajax類庫進行操作。多語言支持:系統支持語言包功能,項目和模塊都可以有單獨的語言包,并且可以自動檢測瀏覽器語言,自動載入對應的語言包。自動驗證:自動完成表單數據的驗證和過濾,生成安全的數據對象。字段類型檢測:字段類型強制轉換,確保數據寫入和查詢更安全。數據庫特性:系統支持多數據庫連接和動態切換機制,支持分布式數據庫。14.2.2ThinkPHP的環境要求ThinkPHP底層運行的內存消耗極低,本身的文件大小也是輕量級的,因此不會出現空間和內存占用的瓶頸。對于PHP的版本,要求是PHP5.3以上。對于服務器和數據庫環境,ThinkPHP支持Windows/Unix服務器環境,可運行于包括Apache和IIS在內的多種Web服務器,支持MySQL、MsSQL、PgSQL、Sqlite和Oracle等多種數據庫。對于剛剛接觸PHP或者ThinkPHP的新手,一般推薦使用集成開發環境WampServer來使用ThinkPHP進行本地開發和測試。14.2.3獲取ThinkPHP?【教師】通過多媒體展示“ThinkPHP官網下載頁”圖片,并進行介紹獲取ThinkPHP的方式有很多,官方網站是最好的獲取來源,其網址為/。其中,下載頁的網址為/down.html,如圖所示。由下載頁可知,官網提供了完整版和核心版兩個下載版本,核心版本只保留了核心類庫和必需的文件,去掉了所有的擴展類庫和驅動。一般建議下載完整版,此處下載目前使用最多的ThinkPHP3.2.3完整版。14.2.4ThinkPHP的目錄結構?【教師】通過多媒體展示“ThinkPHP的初始目錄結構”圖片,并進行介紹ThinkPHP無須安裝,將下載完成的文件直接解壓并拷貝到電腦或者服務器的Web運行目錄下即可。此時可以看到初始的目錄結構如圖所示。應用目錄資源文件目錄應用目錄資源文件目錄框架核心目錄Composer定義文件入口文件說明文件此處的“Application”為默認的應用目錄,其名稱可以根據需要自定義。例如,要做一個關于汽車的項目,可以將該文件夾命名為“car”。其中,README.md文件僅用于說明,實際部署時可以刪除。Application目錄用于存放整個應用文件,如前臺模塊、后臺模塊等,其中默認只有一個入口文件“index.php”和一個說明文件“README.md”,其目錄結構在第一次訪問入口文件時會自動生成,具體可參考14.2.5節的“入口文件”部分。Public用于存放系統資源,其中包括CSS文件、JS文件、圖片文件等。ThinkPHP框架核心目錄的結構如圖14-4所示。?【教師】通過多媒體展示“ThinkPHP框架核心目錄的結構”圖片,并進行介紹核心配置目錄框架應用模式目錄框架授權協議文件核心配置目錄框架應用模式目錄框架授權協議文件核心公共函數目錄核心語言包目錄系統模板目錄框架類庫目錄框架Logo文件框架入口文件Common文件夾中有一個functions.php文件,里面有很多定義好的系統函數。Conf文件夾用于存放對框架進行核心配置的文件。Library目錄是需要重點關注的內容,其中有一個think目錄,存放了ThinkPHP自帶的類文件,包括Model類、Page類、Upload類等,在項目開發中會經常用到這些類。開發人員可以在此基礎上靈活調整,默認的目錄結構和名稱可以根據入口文件和配置參數進行改變。上述應用的目錄結構只是默認設置,事實上,在實際部署應用時,除項目入口文件和Public資源目錄外,為保證系統的安全性,往往將其他文件都放在非Web目錄下。【學生】聆聽、思考、理解、記錄通過教師的講解和演示,使學生了解PHP框架的特點,主流PHP框架,MVC的概念,以及ThinkPHP的基礎知識第二節課問題導入(5min)【教師】提出以下問題:ThinkPHP框架怎么獲取和配置呢?【學生】思考、舉手回答通過問題導入,引導學生主動思考,激發學生的學習興趣傳授新知(20min)【教師】通過學生的回答引入新知,介紹ThinkPHP框架的獲取及應用方法14.2.5入口文件ThinkPHP屬于單一入口框架。單一入口通常是指一個項目或者應用具有一個統一的入口文件,項目的所有功能操作都通過該入口文件進行,并且入口文件往往第一步被執行。對于使用ThinkPHP構建的網站,輸入網址后,默認打開的是入口文件。此處需要注意的一點是,單一并不一定是唯一,因為大部分程序都有前臺和后臺,而前臺和后臺又可以擁有各自的入口文件。單一入口的好處是項目結構規范,這是因為同一個入口,其不同操作之間往往具有相同的規則;另一方面就是單一入口控制靈活、更加安全,因為攔截方便,如一些權限控制、用戶登錄方面的判斷和操作都可以統一處理。一般入口文件主要完成以下功能:載入框架入口文件(必須),一般使用require語句。定義框架路徑和項目路徑(可選)。定義調試模式和應用模式(可選)。定義系統相關常量(可選)。?【教師】通過多媒體展示“默認的入口文件”圖片,并進行介紹默認情況下,框架已經自帶了一個應用入口文件(以及默認的目錄結構),如前面圖中的“index.php”,使用記事本將其打開,內容如圖所示。默認開啟調試模式,在完成項目開發后,需要將其關閉。如果改變了應用目錄,例如把Application更改為App,只需要將入口文件中的APP_PATH常量定義修改為對應值即可:define('APP_PATH','./App/');修改后運行入口文件,會自動在項目根目錄下生成“App”目錄,讀者可自行測試。APP_PATH的定義支持相對路徑和絕對路徑(一般使用相對路徑),但必須以正斜杠“/”結束,否則會出現嚴重錯誤。“引入ThinkPHP入口文件”是這里的重點內容,網站依賴于ThinkPHP核心代碼,所以要引入框架核心目錄“ThinkPHP”中的ThinkPHP.php公共入口文件。requireTHINK_PATH.'ThinkPHP.php';?【教師】通過多媒體展示“歡迎頁面”圖片和圖“自動創建目錄”圖片,并進行介紹運行時目錄模塊控制器目錄項目名稱應用目錄項目公共模塊項目公共函數目錄項目公共配置文件目錄默認生成的運行時目錄模塊控制器目錄項目名稱應用目錄項目公共模塊項目公共函數目錄項目公共配置文件目錄默認生成的Home模塊模塊函數公共目錄模塊配置文件目錄模塊模型目錄模塊視圖文件目錄模板緩存目錄數據目錄日志目錄緩存目錄公共模塊Common中的“Common”文件夾用于放置項目公共函數,存放公共函數的文件一般命名為function.php。網站往往分為前臺和后臺,一般將Home模塊作為前臺模塊,后臺模塊需要自己創建,可以復制一個Home模塊將其重命名為Admin,并打開目錄下“Controller”文件夾中的“IndexController.class.php”文件,將其首行代碼“namespaceHome\Controller;”修改為“namespaceAdmin\Controller;”,這樣便可以直接應用了。在瀏覽器地址欄中輸入“http://servername/index.php/Admin”,就可以訪問后臺首頁了。14.2.6模塊和控制器1.模塊通過前面的學習可以知道,下載后的框架自帶了一個應用目錄結構,并且帶了一個默認的應用入口文件,方便部署和測試,默認的應用目錄是Application(實際部署過程中可以隨意設置)。在自動生成目錄結構的同時,還可以看到在各個目錄下面自動生成了index.html文件,這是ThinkPHP自動生成的目錄安全文件。為避免某些服務器開啟了目錄瀏覽權限后可以直接在瀏覽器輸入URL地址查看目錄,系統默認開啟了目錄安全文件機制,安全文件的名稱可以設置。如果環境足夠安全,不希望生成目錄安全文件,可以在入口文件中關閉目錄安全文件的生成。ThinkPHP采用模塊化的設計架構,由圖14-7可知,每個模塊可以方便地卸載和部署,并且支持公共模塊(Common),但是公共模塊是不能直接訪問的。一般常用的模塊包括Common、Home、Admin和Runtime。2.控制器可以在自動生成的Application\Home\Controller目錄下新建控制器,默認里面有一個IndexController.class.php文件,它是默認的Index控制器文件。一般Index控制器是用來存放首頁的。默認的歡迎頁面其實就是訪問的Home模塊下的Index控制器類的index()操作方法。?【教師】通過多媒體展示例14-1,并進行講解通過修改默認的Index控制器文件,驗證Index控制器的應用。(實例位置:素材與實例\example\ph14\01)(1)在網站根目錄下新建文件夾“01”,將解壓后的ThinkPHP文件拷貝到該目錄下,并運行項目入口文件“index.php”,以自動生成應用目錄結構。(2)打開默認的Index控制器文件“IndexController.class.php”,修改默認的index()操作方法如下:namespaceHome\Controller;useThink\Controller;classIndexControllerextendsController{ publicfunctionindex(){ echo'大家好,歡迎你們跟我一起學習PHP!'; }}(3)再次運行項目入口文件“index.php”,結果如圖所示。控制器類的命名方式:控制器名(駝峰命名法,首字母大寫)+Controller,例如前面的IndexController控制器類;控制器文件的命名方式:類名+.class.php(類文件后綴),例如前面的IndexController.class.php文件。駝峰命名法,就是當變量名或函數名是由一個或多個單詞連接在一起,而構成的唯一識別字時,第一個單詞以小寫字母開始,之后的單詞以大寫字母開始;或者每一個單詞都以大寫字母開始,例如:myFirstName,myLastName和DataBaseUser,這樣的變量名或函數名看上去就像駱駝峰一樣此起彼伏,故得名。14.2.7ThinkPHP命名規范為避免不必要的麻煩,在使用ThinkPHP開發項目時,應盡量遵循其自身的命名規范。類文件以.class.php為后綴(此處是指ThinkPHP內部使用的類庫文件,不代表外部加載的類庫文件),使用駝峰命名法,并且首字母大寫,例如DbMysql.class.php。類的命名空間地址和所在的路徑地址一致,例如Home\Controller\UserController類所在的路徑應該是Application\Home\Controller\UserController.class.php。確保文件名和調用時的文件名大小寫一致,這是由于在類UNIX系統上,對大小寫是敏感的(而ThinkPHP在調試模式下,即使在Windows平臺也會嚴格檢查大小寫)。類名和文件名一致(包括上面說的大小寫一致),例如UserController類的文件名是UserController.class.php,InfoModel類的文件名是InfoModel.class.php。函數、配置文件等其他類庫文件,一般是以.php為后綴(第三方引入的不做要求)。函數的命名使用小寫字母加下畫線的方式,例如get_client_ip。方法的命名使用駝峰命名法,并且首字母小寫或者使用下畫線“_”,例如getUserName,_parseType,通常下畫線開頭的方法屬于私有方法。屬性的命名使用駝峰命名法,并且首字母小寫或者使用下畫線“_”,例如tableName,_instance,通常下畫線開頭的屬性屬于私有屬性。以雙下畫線“__”開頭的函數或方法作為魔術方法,例如__call()和__autoload()。常量以大寫字母加下畫線命名,例如HAS_ONE和MANY_TO_MANY。配置參數以大寫字母加下畫線命名,例如HTML_CACHE_ON。語言變量以大寫字母加下畫線命名,例如MY_LANG,以下畫線開頭的語言變量通常用于系統語言變量,例如_CLASS_NOT_EXIST_。對變量的命名沒有強制規范,可以根據團隊規范來進行。ThinkPHP的模板文件默認以.html為后綴(可以通過配置文件進行修改)。數據表和字段采用小寫字母加下畫線方式命名,例如think_user表和user_name字段。字段名不要以下畫線開頭,類似_username這樣的數據表字段可能會被過濾。

溫馨提示

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

評論

0/150

提交評論