版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE6PAGE6PAGE5PAGE5
課題ThinkPHP的控制器與模型課時(shí)2課時(shí)(90min)教學(xué)目標(biāo)知識(shí)技能目標(biāo):(1)了解模型的定義(2)掌握控制器的作用及相關(guān)操作素質(zhì)目標(biāo):(1)培養(yǎng)學(xué)生責(zé)任意識(shí)和職業(yè)素養(yǎng),使學(xué)生養(yǎng)成良好的習(xí)慣(2)響應(yīng)國(guó)家的號(hào)召,積極開展創(chuàng)新創(chuàng)業(yè),為個(gè)人發(fā)展和國(guó)家的興盛而努力教學(xué)重難點(diǎn)教學(xué)重點(diǎn):控制器的作用及相關(guān)操作教學(xué)難點(diǎn):ThinkPHP中模塊化設(shè)計(jì)、URL模式、命名空間教學(xué)方法案例分析法、問答法、討論法、講授法、實(shí)踐法教學(xué)用具電腦、投影儀、多媒體課件、教材教學(xué)設(shè)計(jì)第1節(jié)課:→→→傳授新知(38min)第2節(jié)課:→傳授新知(20min)→小組討論(15min)→課堂小結(jié)(3min)→作業(yè)布置(2min)教學(xué)過程主要教學(xué)內(nèi)容及步驟設(shè)計(jì)意圖第一節(jié)課課前任務(wù)【教師】布置課前任務(wù),和學(xué)生負(fù)責(zé)人取得聯(lián)系,讓其提醒同學(xué)通過文旌課堂APP或其他學(xué)習(xí)軟件,預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識(shí)【學(xué)生】完成課前任務(wù)通過課前任務(wù),使學(xué)生預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識(shí),增加學(xué)生的學(xué)習(xí)興趣考勤(2min)【教師】使用文旌課堂APP進(jìn)行簽到【學(xué)生】班干部報(bào)請(qǐng)假人員及原因培養(yǎng)學(xué)生的組織紀(jì)律性,掌握學(xué)生的出勤情況問題導(dǎo)入(5min)【教師】提出以下問題:ThinkPHP的控制器是什么?ThinkPHP模型的作用是什么?通過問題導(dǎo)入,引導(dǎo)學(xué)生主動(dòng)思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(38min)【教師】通過學(xué)生的回答引入要講的知識(shí),講解ThinkPHP的控制器的定義與使用,以及ThinkPHP模型的定義14.5ThinkPHP的控制器?【教師】安排學(xué)生掃碼觀看視頻“ThinkPHP的控制器”,講解知識(shí)?【學(xué)生】掃碼觀看、理解、記憶ThinkPHP的控制器實(shí)際上就是一個(gè)類,而操作則是控制器類的一個(gè)公共方法。14.5.1定義控制器控制器的定義非常簡(jiǎn)單,下面是一個(gè)典型控制器類的定義:<?phpnamespaceHome\Controller;useThink\Controller;classIndexControllerextendsController{ publicfunctionhello(){ echo'大家好,歡迎跟我一起學(xué)習(xí)thinkphp!'; } }?>其中的IndexController類代表了Home模塊下Controller目錄下的Index控制器,而hello操作就是IndexController類中的hello()方法(公有)。當(dāng)在類中添加hello()方法后,在瀏覽器地址欄中輸入
“http://serverName/index.php/Home/Index/hello”,將會(huì)輸出“大家好,歡迎跟我一起學(xué)習(xí)thinkphp!”??刂破魍ǔP枰^承系統(tǒng)的Controller類或其子類,操作方法的定義必須是公共方法,否則會(huì)報(bào)錯(cuò)。定義控制器方法時(shí),要盡量避免和系統(tǒng)的保留方法相沖突。由于操作方法就是控制器的一個(gè)方法,所以遇到有和系統(tǒng)關(guān)鍵字沖突的方法可能就不能定義了,此時(shí)可以設(shè)置操作方法的后綴來解決,如在操作方法名后面加“Action”。14.5.2實(shí)例化控制器通常情況下,系統(tǒng)會(huì)根據(jù)URL地址解析出訪問的控制器名稱,并調(diào)用相關(guān)的操作方法,自動(dòng)完成訪問控制器的實(shí)例化。如果需要跨控制器調(diào)用,則可以單獨(dú)實(shí)例化://實(shí)例化Home模塊的User控制器$User=new\Home\Controller\UserController();//實(shí)例化Admin模塊的Blog控制器$Blog=new\Admin\Controller\BlogController();系統(tǒng)為上面的控制器實(shí)例化提供了一個(gè)快捷調(diào)用方法A(),上面的代碼可以簡(jiǎn)化為//假設(shè)當(dāng)前模塊是Home模塊$User=A('User');$Blog=A('Admin/Blog');?【教師】通過多媒體展示例14-7,演示通過跨控制器調(diào)用的實(shí)現(xiàn)的操作A()方法的應(yīng)用。本例通過跨控制器調(diào)用的實(shí)現(xiàn),來學(xué)習(xí)A()方法在實(shí)際項(xiàng)目中的應(yīng)用(1)在網(wǎng)站根目錄下新建文件夾“07”,將例14-5中的素材文件“05”目錄下的文件全部拷貝到“07”文件夾中(2)在“.\Application\Home\Controller”目錄下新建控制器文件“UserController.class.php”……(詳見教材)?【學(xué)生】觀看、理解、記憶14.5.3頁(yè)面跳轉(zhuǎn)在應(yīng)用開發(fā)中,經(jīng)常會(huì)遇到一些帶有提示信息的跳轉(zhuǎn)頁(yè)面,例如操作成功或者操作錯(cuò)誤頁(yè)面,并且自動(dòng)跳轉(zhuǎn)到另外一個(gè)目標(biāo)頁(yè)面。系統(tǒng)的\Think\Controller類內(nèi)置了兩個(gè)跳轉(zhuǎn)方法success()和error(),用于頁(yè)面跳轉(zhuǎn)提示,并且可以支持ajax提交。?【教師】通過多媒體展示例14-8,演示頁(yè)面跳轉(zhuǎn)的實(shí)現(xiàn)的操作本例通過頁(yè)面跳轉(zhuǎn)的實(shí)現(xiàn),來學(xué)習(xí)success()和error()方法在實(shí)際項(xiàng)目中的應(yīng)用。(1)在網(wǎng)站根目錄下新建文件夾“08”,將例14-7中的素材文件“07”目錄下的文件全部拷貝到“08”文件夾中(2)打開Home模塊Controller目錄下的控制器文件“UserController.class.php”,在其中定義demo()方法和demo1()方法……(詳見教材)?【學(xué)生】觀看、理解、記憶讀者可將demo1()方法中的“$a=true;”修改為“$a=false;”,然后測(cè)試“失敗跳轉(zhuǎn)”的運(yùn)行結(jié)果。上述代碼中用到了success()和error()方法,二者用法相同,其中的第一個(gè)參數(shù)表示提示信息,第二個(gè)參數(shù)表示跳轉(zhuǎn)地址,第三個(gè)參數(shù)表示跳轉(zhuǎn)時(shí)間(單位為秒),例如,對(duì)于語(yǔ)句:$this->success('添加成功!',U('User/index'),5);,“添加成功!”表示提示信息,“U('User/index')”表示添加成功后跳轉(zhuǎn)到的地址,“5”表示自動(dòng)跳轉(zhuǎn)時(shí)間。此處重點(diǎn)說一下U()函數(shù),它用于動(dòng)態(tài)生成URL地址,可以確保項(xiàng)目在移植過程中不受環(huán)境影響。U()方法的定義規(guī)則如下(方括號(hào)內(nèi)參數(shù)根據(jù)實(shí)際應(yīng)用決定):U('地址表達(dá)式',['參數(shù)'],['偽靜態(tài)后綴'],['顯示域名'])地址表達(dá)式的格式定義如下:[模塊/控制器/操作#錨點(diǎn)@域名]?參數(shù)1=值1&參數(shù)2=值2...如果未定義模塊,就表示當(dāng)前模塊名稱,下面是一些簡(jiǎn)單的例子:U('User/add') //生成User控制器的add操作的URL地址U('Blog/read?id=1') //生成Blog控制器的read操作并且id為1的URL地址U('Admin/User/select') //生成Admin模塊的User控制器的select操作的URL地址【學(xué)生】聆聽、思考、記錄【教師】講解ThinkPHP模型的定義與使用14.6ThinkPHP的模型ThinkPHP中的基礎(chǔ)模型類是Think\Model類,位于ThinkPHP核心文件“Library\Think\
Model”目錄下。該類能夠完成基本的CURD操作和統(tǒng)計(jì)查詢?;A(chǔ)模型類的設(shè)計(jì)非常靈活,無須進(jìn)行任何模型定義,就可以進(jìn)行相關(guān)數(shù)據(jù)表的CURD操作,只有在需要實(shí)現(xiàn)相對(duì)復(fù)雜的操作時(shí),才需要自定義模型類。14.6.1模型的定義模型類通常需要繼承系統(tǒng)的Think\Model類或其子類,其定義格式如下:namespaceHome\Model;useThink\Model;classUserModelextendsModel{}上述代碼是Home\Model\UserModel類的定義。模型類的主要作用是操作數(shù)據(jù)表,如果按照系統(tǒng)的規(guī)范來命名模型類,大多數(shù)情況下可以自動(dòng)對(duì)應(yīng)數(shù)據(jù)表。模型類的命名規(guī)則是除去表前綴的數(shù)據(jù)表名稱,采用駝峰命名法命名,并且首字母大寫,然后加上模型層的名稱(默認(rèn)定義是Model)。例如,UserModel表示模型類名,其對(duì)應(yīng)的數(shù)據(jù)表應(yīng)該是think_user(此處假設(shè)數(shù)據(jù)庫(kù)的前綴定義是think_);而UserTypeModel應(yīng)該對(duì)應(yīng)數(shù)據(jù)表think_user_type。?【教師】通過多媒體展示“數(shù)據(jù)表名稱的屬性定義”表格,并進(jìn)行介紹除此之外,在ThinkPHP的模型里面,還有幾個(gè)關(guān)于數(shù)據(jù)表名稱的屬性定義,如表所示。數(shù)據(jù)表名稱的屬性定義屬性說明tablePrefix定義模型對(duì)應(yīng)數(shù)據(jù)表的前綴,如果未定義則獲取配置文件中的DB_PREFIX參數(shù)tableName不包含表前綴的數(shù)據(jù)表名稱,一般情況下默認(rèn)和模型名稱相同,只有當(dāng)表名和當(dāng)前模型類名稱不同時(shí)才需要定義trueTableName包含前綴的數(shù)據(jù)表名稱,也就是數(shù)據(jù)庫(kù)中的實(shí)際表名,該名稱無須設(shè)置,只有當(dāng)上面的規(guī)則都不適用或者特殊情況下才需要設(shè)置dbName定義模型當(dāng)前對(duì)應(yīng)的數(shù)據(jù)庫(kù)名稱,只有在當(dāng)前模型類對(duì)應(yīng)的數(shù)據(jù)庫(kù)名稱和配置文件不同時(shí)才需要定義為便于理解,下面進(jìn)行舉例說明。例如,在數(shù)據(jù)庫(kù)中有一個(gè)think_categories表,而定義的模型類名稱是CategoryModel,按照系統(tǒng)約定,該模型名稱是Category,對(duì)應(yīng)的數(shù)據(jù)表名稱應(yīng)該是think_category(全部小寫),但是現(xiàn)在的數(shù)據(jù)表名稱是think_categories,因此就需要設(shè)置tableName屬性來改變默認(rèn)的規(guī)則(假設(shè)已經(jīng)在配置文件中定義了DB_PREFIX為think_)。代碼如下:namespaceHome\Model;useThink\Model;classCategoryModelextendsModel{ protected$tableName='categories';}【學(xué)生】聆聽、思考、記錄通過教師的講解和演示,使學(xué)生了解ThinkPHP的控制器的定義與使用,以及ThinkPHP模型的定義第二節(jié)課問題導(dǎo)入(5min)【教師】提出以下問題:通過學(xué)習(xí),我們已經(jīng)了解模型的定義,那么如何使用模型呢?【學(xué)生】思考、舉手回答通過問題導(dǎo)入,引導(dǎo)學(xué)生主動(dòng)思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(20min)【教師】通過學(xué)生的回答引入新知,介紹PHP中實(shí)例化模型的操作,以及連接數(shù)據(jù)庫(kù)的方法14.6.2實(shí)例化模型根據(jù)不同的模型定義,有幾種實(shí)例化模型的方法,根據(jù)需要采用不同方式即可。1.實(shí)例化基礎(chǔ)模型(Model)類可以像實(shí)例化其他類庫(kù)一樣實(shí)例化基礎(chǔ)模型類,如下所示:$User=newModel('User');$User->select();//進(jìn)行其他的數(shù)據(jù)操作也可以使用M()方法快捷實(shí)例化,其效果是相同的。用法如下://使用M()方法實(shí)例化$User=M('User');//和用法$User=new\Think\Model('User');等效//執(zhí)行其他數(shù)據(jù)操作$User->select();使用M()方法實(shí)例化的時(shí)候,默認(rèn)情況下是直接實(shí)例化系統(tǒng)的\Think\Model類。2.實(shí)例化自定義模型(Model)類快捷方法D()用于自定義模型類的實(shí)例化操作,其使用方法如下://實(shí)例化模型$User=D('User');//相當(dāng)于$User=new\Home\Model\UserModel();//執(zhí)行具體的數(shù)據(jù)操作$User->select();D()方法的參數(shù)就是模型名稱,并且和模型類的大小寫定義一致,例如:User對(duì)應(yīng)的模型類文件為\Home\Model\UserModel.class.php;UserType對(duì)應(yīng)的模型類文件為\Home\Model\UserTypeModel.class.php。D()方法可以自動(dòng)檢測(cè)模型類,如果存在自定義的模型類,則實(shí)例化自定義模型類,如果不存在,則會(huì)實(shí)例化系統(tǒng)的\Think\Model基類,同時(shí)對(duì)于已實(shí)例化過的模型,不會(huì)重復(fù)實(shí)例化。?【教師】通過多媒體展示例14-9,演示使用模型讀取表數(shù)據(jù)的操作本例通過自定義模型類,并在控制器中調(diào)用模型類來實(shí)現(xiàn)讀取表數(shù)據(jù)的目的(1)在網(wǎng)站根目錄下新建文件夾“09”,將例14-7中的素材文件“07”目錄下的文件全部拷貝到“09”文件夾中(2)在數(shù)據(jù)庫(kù)“database14”中新建數(shù)據(jù)表“school_user”……(詳見教材)?【學(xué)生】觀看、理解、記憶運(yùn)行網(wǎng)頁(yè)時(shí),如果提示Undefinedclassconstant
'MYSQL_ATTR_INIT_COMMAND',需要在php.ini中開啟或添加extension=php_pdo_mysql.dll,并重啟服務(wù)器。14.6.3連接數(shù)據(jù)庫(kù)ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫(kù)訪問層,把不同的數(shù)據(jù)庫(kù)操作封裝起來,所以在應(yīng)用中只需要使用公共的Db類進(jìn)行操作,而無須針對(duì)不同的數(shù)據(jù)庫(kù)編寫不同的代碼和底層實(shí)現(xiàn),Db類會(huì)自動(dòng)調(diào)用相應(yīng)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)來處理。如果應(yīng)用需要使用數(shù)據(jù)庫(kù),必須配置數(shù)據(jù)庫(kù)連接信息,數(shù)據(jù)庫(kù)的配置文件有多種定義方式。常用的配置方式是在應(yīng)用配置文件或者模塊配置文件中添加下面的配置參數(shù)://數(shù)據(jù)庫(kù)配置信息'DB_TYPE'=>'mysql',//數(shù)據(jù)庫(kù)類型'DB_HOST'=>'',//服務(wù)器地址'DB_NAME'=>'thinkphp',//數(shù)據(jù)庫(kù)名'DB_USER'=>'root', //用戶名'DB_PWD'=>'123456', //密碼'DB_PORT'=>3306, //端口'DB_PARAMS'=>array(), //數(shù)據(jù)庫(kù)連接參數(shù)'DB_PREFIX'=>'think_', //數(shù)據(jù)庫(kù)表前綴'DB_CHARSET'=>'utf8', //字符集'DB_DEBUG'=>TRUE, //數(shù)據(jù)庫(kù)調(diào)試模式開啟后可以記錄SQL日志例14-9中便采用了這種方式。數(shù)據(jù)庫(kù)的類型由DB_TYPE參數(shù)設(shè)置。ThinkPHP目前支持的數(shù)據(jù)庫(kù)類型有MySQL、PostgreSQL、SQLite、SQLServ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 宿舍供配電課程設(shè)計(jì)
- 支教課程設(shè)計(jì)中學(xué)
- 提高自律能力課程設(shè)計(jì)
- 《機(jī)械球磨法制備石墨烯復(fù)合電極材料及其超級(jí)電容特性》
- 解放思想改革創(chuàng)新心得體會(huì)
- 基于信息化的護(hù)理查房制度探討
- 2024-2030年中國(guó)汽車座套行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 錄播腿法課程設(shè)計(jì)思路
- 2024-2030年中國(guó)汽車2s行業(yè)現(xiàn)狀分析及未來發(fā)展趨勢(shì)研究報(bào)告
- 物流行業(yè)員工獎(jiǎng)金分配方案
- 微量泵的操作及報(bào)警處置課件查房
- 云南省昆明市西山區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末語(yǔ)文試卷
- 人教版小學(xué)數(shù)學(xué)四年級(jí)上冊(cè)5 1《平行與垂直》練習(xí)
- 市政設(shè)施養(yǎng)護(hù)面年度計(jì)劃表
- 公差配合與技術(shù)測(cè)量技術(shù)教案
- 堅(jiān)持教育、科技、人才“三位一體”為高質(zhì)量發(fā)展貢獻(xiàn)高校力量
- 污水處理廠工藝設(shè)計(jì)及計(jì)算
- 杭州宇泰機(jī)電設(shè)備有限公司X射線機(jī)室內(nèi)探傷項(xiàng)目(新建)環(huán)境影響報(bào)告
- 2023年冷柜行業(yè)專題研究報(bào)告
- 人教版八年級(jí)物理下冊(cè) 實(shí)驗(yàn)題03 浮力的實(shí)驗(yàn)(含答案詳解)
- 秸稈綜合利用投標(biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論