ThinkPHP教學(xué)筆記剖析_第1頁
ThinkPHP教學(xué)筆記剖析_第2頁
ThinkPHP教學(xué)筆記剖析_第3頁
ThinkPHP教學(xué)筆記剖析_第4頁
ThinkPHP教學(xué)筆記剖析_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、ThinkPHP課程目標(biāo):1、關(guān)于mvc和tp的簡介2、快速入門3、學(xué)習(xí)tp中的各個組件(M、V、C)控制器模型視圖4、實用項關(guān)于MVC和TP的簡介:一、 什么是框架框架,即framework。其實就是某種應(yīng)用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。 二、 為什么使用框架l 代碼重用l 合理分工l 解決多人協(xié)作開發(fā)問題三、 主流的php框架l Zend Framework l Yii l Symfony l Codelgniter l ThinkPHP l 四、 什么是MVCl MVC是施樂帕克研究中心 (Xerox PARC)在八十年代為編程語言Smalltalk80發(fā)明的一種軟件

2、設(shè)計模式,至今已被廣泛使用。l MVC是一個設(shè)計模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個核心部件:模型、視圖、控制器。 l M:model模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則 l V:view視圖是用戶看到并與之交互的界面 l C:controller控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求 我們?nèi)コ燥?,大堂?jīng)理問我們:客官來點什么?我們:來地溝油!經(jīng)理讓服務(wù)員將我們帶到包房經(jīng)理將我們點的菜發(fā)給廚房廚房開始做菜,好了之后,通知經(jīng)理經(jīng)理讓服務(wù)員將菜端給我們經(jīng)理:控制器后廚:模型 菜:數(shù)據(jù)服務(wù)員:視圖五、 獲取ThinkPHPl l 下載thinkphp3.

3、0l 直接部署到項目中l(wèi) php5.2所有tp版本要求php必須是5以上的,tp3中要求是5.2以上的快速入門一、 了解TP目錄結(jié)構(gòu)將下載的tp3.0壓縮包進行解壓,可看到兩個夾:Examples:代碼示例ThinkPHP:這是我們想用的框架程序我們需要將Thinkphp 文件夾移動至我們的項目中,打開ThinkPHP文件夾,可以看到如下內(nèi)容:l ThinkPHP.php框架入口文件l Common框架公共文件目錄l Conf框架配置文件目錄l Lang框架系統(tǒng)語言目錄l Lib系統(tǒng)核心基類庫目錄l Tpl系統(tǒng)模板目錄l Extend框架擴展目錄二、 開發(fā)流程l 創(chuàng)建項目,并將ThinkPHP

4、獲得l 創(chuàng)建入口文件l 配置項目l 創(chuàng)建控制器l 創(chuàng)建模型(可以不存在自定義模型)l 創(chuàng)建模板l 運行調(diào)試,調(diào)優(yōu)l 部署到生產(chǎn)環(huán)境三、 入口文件l 所有項目都是從入口文件開始的l 定義框架路徑l 定義項目路徑l 定義項目名稱l 載入框架入口文件 四、第一個ThinkPHP項目1、 創(chuàng)建項目2012,將thinkphp復(fù)制到我們網(wǎng)站的根路徑下,在htdocs下創(chuàng)建index.php文件l require("ThinkPHP/ThinkPHP.php");l THINK_PATHl APP_NAME l APP_PATH 在tp中,由于目錄結(jié)構(gòu)稍微復(fù)雜,所以在第一次訪問入口文件

5、時,會幫助我們自動創(chuàng)建項目結(jié)構(gòu)運行路徑:http:/localhost/index.php,可以看到如下界面,說明運行成功2、 了解項目目錄結(jié)構(gòu)l Common項目公共文件目錄l Conf項目配置目錄l Lang項目語言包目錄l Lib項目類庫目錄l Tpl項目模板目錄l Runtime項目運行時目錄3、為什么輸入地址之后,可以看到內(nèi)容http:/localhost/index.php由于請求的是這個url,如果沒有寫任何信息,表示請求Index模塊的index動作也就是說:會自動請求IndexAction這個類下的index方法為什么這樣自動請求?l DEFAULT_MODULE:默認的默認

6、模塊名l DEFAULT_ACTION:默認的動作名這個是由于這兩個配置選項來決定的在配置文件Conf/config.php中添加如下內(nèi)容:這時會請求StudentAction這個類下的add方法。4、我們按照以上的結(jié)構(gòu)開發(fā)項目,合適?不合適將thinkphp框架和入口文件index.php移動至我們的項目路徑(2012)文件夾下這樣做需要哪些改動?如果您的項目和上圖目錄結(jié)構(gòu)相同,可以使用如下代碼:這樣即可重新運行,重新初始化。5、開啟調(diào)試l define(APP_DEBUG,true);l require(ThinkPHP/ThinkPHP.php);APP_DEBUG:表示開啟調(diào)試功能功能

7、:如果開啟,則不產(chǎn)生runtime.php這個編譯文件如果產(chǎn)生了錯誤,可以看到錯誤提示6、了解thinkphp的工作流程Thinkphp.php文件主要內(nèi)容如下:定義了項目路徑定義了運行時文件路徑定義是否開啟調(diào)試,默認是false如果關(guān)閉調(diào)試模試并且運行時文件存在,就直接包含運行時文件否則定義tp框架的路徑,并且包含common下的運行時文件運行時文件的功能?第一次運行時,會生產(chǎn)生運行時文件,這個運行時文件會保存一些系統(tǒng)常用設(shè)置和常用函數(shù),這樣一來,下次請求時,直接包含該運行時文件,可以避免系統(tǒng)開銷運行時文件可能會造成延遲效果,在開發(fā)時,建議開啟APP_DEBUG7、完善程序l 創(chuàng)建Index

8、控制器的hello方法,顯示相應(yīng)模板l 創(chuàng)建Admin控制器l 創(chuàng)建Admin控制器的index方法,顯示相應(yīng)模板l 創(chuàng)建Admin控制器的hello方法,顯示相應(yīng)模板控制器一、什么是控制器控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。 舉個例子:http:/項目/index.php/a模塊/b操作該請求是想請求a模塊的b方法,也就是說,會調(diào)用a模塊的控制器的b方法我們需要在項目目錄的action目錄下,定義一個控制器文件,這個文件的命名規(guī)則如下:模塊名(首字母大寫)Action.class.php文件中的類的命名規(guī)則:Class 模塊名(首字母大寫)Action extends Ac

9、tion二、URL的調(diào)度模式Thinkphp默認支持的url是這種形式的:http:/項目/index.php/模塊/操作除此之外,還有哪些種url被支持在tp中,可以配置下面這個選項來使用相應(yīng)的url'URL_MODEL' => 1,URL_MODEL它的取值范圍:共有4種0:普通模式1:pathinfo模式2:Rewrite模式3:兼容模式1普通模式:http:/serverName/appName/index.php?m=module&a=action&id=1m:模塊名a:動做名表示請求參數(shù)m指定的模塊,請求這個模塊下的a參數(shù)指定的方法,同時向這個

10、方法傳遞一個參數(shù)為id,值為1將url_model配置為0'URL_MODEL' => 0/設(shè)置url為普通模式2、 pathInfo模式 (默認模認)http:/serverName/appName/index.php/module/action/id/1/ module:表示模塊action:表示方法id/1 :傳遞一個參數(shù)id,值為1URL_PATHINFO_DEPR :設(shè)置url分隔符'URL_MODEL' => 1,/設(shè)置url為pathInfo模式'URL_PATHINFO_DEPR' => '-'

11、/設(shè)置url中的分隔符如果這樣設(shè)置,可以這樣訪問:http:/localhost/2012/index.php/Index-hello-id-13、 Rewrite模式我們可以利用rewrite模實現(xiàn)對入口文件的隱藏http:/serverName/appName/module/action/id/1/ 'URL_MODEL' => 2/設(shè)置為rewrite模式最終,可以使用下列這種URL進行訪問,實現(xiàn)了對index.php入口文件的隱藏http:/localhost/2012/Index/hello4、 兼容模式http:/serverName/appName/?s=/

12、module/action/id/1/ module:模塊名action:動做名id:參數(shù)名1:參數(shù)值'URL_MODEL' => 3/設(shè)置為兼容模式三、定義控制器位置:Lib/Actionclass UserAction extends Actionpublic function add()$this->display();四、 空操作l 空操作是指系統(tǒng)在找不到指定的操作方法的時候,會定位到空操作(_empty)方法來執(zhí)行,利用這個機制,我們可以實現(xiàn)錯誤頁面和一些URL的優(yōu)化。l _empty($name)$name:請求的不存在的方法的名稱怎樣解決非法操作?當(dāng)我

13、們請求一個不存在的方法時,會自動定位到這個叫_empty的方法中,這個不存在的方法名會保存到參數(shù)$name中1) 可以實現(xiàn)一些錯誤頁面的處理功能2) 可以實現(xiàn)一些url的優(yōu)化:在下面,我們將這個問題說清楚/我想查詢北京、上海的所有會員信息?public function search()$city=$_GET'city'echo "select * from User where city='$city'".'<br>'我希望能實現(xiàn)這樣的url優(yōu)化:http:/localhost/2012/index.php/Us

14、er/shanghaihttp:/localhost/2012/index.php/User/beijingTP認為shanghai和beijing是一個方法名,會自動到UserAction控制器下查shanghai和bejing方法,由于我們沒有定義這兩個方法,所以會自動執(zhí)行_empty方法,所以這時$name參數(shù)的值為shanghai或beijing,代碼如下:五、 空模塊l 空模塊的概念是指當(dāng)系統(tǒng)找不到指定的模塊名稱的時候,系統(tǒng)會嘗試定位空模塊(EmptyAction),利用這個機制我們可以用來定制錯誤頁面和進行URL的優(yōu)化。l EmptyActionMODULE_NAME當(dāng)請求不到指定

15、的模塊時,會自動去找EmptyAction這個類,如果這時url中沒有指定方法名,由于DEFAULT_ACTION=index,所以會自動使用這個類的index方法,我們可以在這個類中再定義一個_empty方法,這樣一來,如果用戶請求了不存在的模塊和不存在方法名時,會自動定位到這里1) 關(guān)于錯誤的處理2) 實現(xiàn)一些url的優(yōu)化我想實現(xiàn)這樣的url:http:/localhost/index.php/shanghaihttp:/localhost/index.php/bejing六、 項目分組為什么進行項目分組?如:前臺、后臺、博客、商品我們認為:這可以分成四個項目,在tp可以做一些設(shè)置,將項目

16、進行分組l config.php 配置文件l APP_GROUP_LIST:分組列表(有幾個組,在這里都需要列出,使用逗號分隔開)l DEFAULT_GROUP:默認分組舉個例子:我現(xiàn)在想將項目分成兩個組,前臺和后臺Home:前臺Admin:后臺Conf/config.php代碼如下:該如何設(shè)置分組目錄:必須要做兩個設(shè)置:1) 對控制器進行分組2) 對模板進行分組在Lib/Action目錄下,創(chuàng)建兩個文件夾,分別為:HomeAdmin這兩個名字必須和分組名相同在Tpl/下,創(chuàng)建兩個文件夾,分別為:HomeAdmin這兩個名字必須和分組名相同將之前的幾個控制器文件放入到Admin文件夾下,表示它

17、們都是后臺項目的控制器,然后,輸入url;http:/localhost/2012/index.php/Admin/Index/indexAdmin:表示分組名Index:表示模塊名Index:表示動做名如:該問前臺中的product模塊中的add操作,可以使用如下url:http:/localhost/2012/index.php/Home/Product/add由于之前設(shè)置了默認分組名為Home,所以這個url也可以寫成http:/localhost/2012/index.php/Product/add最后,在tpl下的各個項目文件夾創(chuàng)建相應(yīng)的模塊對應(yīng)的模板,即可!七、 URL大小寫htt

18、p:/localhost/2012/index.php/Admin/Index/hellohttp:/localhost/2012/index.php/Admin/index/hello以上兩種URL都想表示訪問同一個方法,但是由于tp中的url區(qū)分大小寫,所以第二種方法會定位到index模塊的hello方法上有時,我們希望url 中可以不區(qū)別大小寫,可以使用如下設(shè)置:l config.php配置文件l URL_CASE_INSENSITIVE=>true/不區(qū)分大小寫'URL_CASE_INSENSITIVE' => false, / 默認false 表示URL區(qū)分大小寫 true則表示不區(qū)分大小寫八、 前置后置操作有時我們希望執(zhí)行方法之前和之后,各有一些額外的操作,這時可以考慮使用前置和后置操作l _before_l _after_public function _before_index()public function index()public function _after_index()九、 頁

溫馨提示

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

評論

0/150

提交評論