版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 PHP(MCV)框架筆記一1. MVC概念與作用1.MVC是一種非常重要的設(shè)計(jì)模式,是三個(gè)字詞的縮寫,分別為:模型(Model)、視圖(View)和控制器(Controller)2.MVC模式的目的就是實(shí)現(xiàn)web系統(tǒng)的職能分工,它強(qiáng)制性使應(yīng)用程序的輸入、處理和輸出分開,可以各自處理自己的任務(wù),是一種分層的概念.二.MVC模式的工作原理1.視圖(view)2.模型(model)3.控制器(controller)4.MVC的設(shè)計(jì)思路是把一個(gè)應(yīng)用的輸入、處理、輸出流程按照model、view和controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層(模型層,視圖層,控制層).三.MVC模式的優(yōu)
2、點(diǎn)1. MVC是構(gòu)筑軟件非常好的基本模式,至少將業(yè)務(wù)處理與顯示分離,強(qiáng)迫將應(yīng)用分為模型、視圖及控制層,使得你會(huì)認(rèn)真考慮應(yīng)用的額外復(fù)雜性,把這些想法融入架構(gòu)中,增加了應(yīng)用的可拓展性,如果能把握這一點(diǎn),mvc模式會(huì)使你的應(yīng)用更加強(qiáng)壯,更加有彈性,更加個(gè)性化四.MVC的缺點(diǎn)1.對(duì)開發(fā)人員的要求比較高2.MVC是一種基本的設(shè)計(jì)模式3.視圖和模式的嚴(yán)格分離可能使得調(diào)試難度較高,但是比較容易發(fā)現(xiàn)錯(cuò)誤五.什么是框架1.框架就是一個(gè)系統(tǒng)的半成品,是在給定的問題領(lǐng)域內(nèi),實(shí)現(xiàn)了一個(gè)應(yīng)用程序的一部分設(shè)計(jì),是整個(gè)或部分系統(tǒng)的可重用設(shè)計(jì),表現(xiàn)為一組抽象構(gòu)件以及構(gòu)件實(shí)例間交互的方法,并且提供了豐富的組件庫,只增加了一些內(nèi)
3、容或調(diào)用一些提供好的組件就可以完成自己的系統(tǒng)六.MVC采用的是單一的入口文件1.如:http:/localhost/lamp120/mvc/index.php?m=stu&a=add /開打?qū)W生信息的添加頁面1.1其中的M值stu表示訪問的是stuCinteroller a的add表示是方法(動(dòng)作) 就是訪問stuAction的add方法2.mvc通過請(qǐng)求訪問了控制層C,C調(diào)度M模型獲取我們所需要的信息數(shù)據(jù),然后再去加載V視圖將結(jié)果整合后響應(yīng)給我們3.mvc是一種設(shè)計(jì)模式,不是框架,使用mvc設(shè)計(jì)的模式搭建的項(xiàng)目架構(gòu)才叫框架.七.創(chuàng)建目錄1.ORG 第三方擴(kuò)展類2.Model M(模型
4、)層目錄(M)3.controller C(控制)層目錄(C)4.view V(視圖) 層目錄(Smarty的模板目錄)5.public公共資源目錄6.libsSmarty庫(解壓到這里即可)7.view_cSmarty模板編譯目錄(可選)8.cacheSmarty靜態(tài)緩存目錄(可選)9.configs 配置文件目錄七.將自己寫好的數(shù)據(jù)庫操作類放到model目錄下model/model.class.php八.在ORG目錄下創(chuàng)建一個(gè)tpl.class.php的smarty子類,用于初始化smarty(等同于以前的init.php)代碼如下:1./Smarty信息的初始化類class Tpl ex
5、tends Smartypublic function _construct()parent:_construct(); /構(gòu)造父類2. /初始化Smarty對(duì)象中屬性:3. $this->template_dir = "view"/smarty模板目錄$this->compile_dir = "view_c"/smarty模板編譯目錄$this->config_dir = "configs"/smarty配置文件目錄$this->cache_dir = "cache"/smarty模板靜態(tài)
6、緩存目錄/$this->caching = true;/是否開啟靜態(tài)緩存/$this->cache_lifetime = 3600;/靜態(tài)緩存時(shí)間(秒)/指定定界符$this->left_delimiter="<"/左定界符$this->right_delimiter=">"/右定界符9. 在controller目錄下創(chuàng)建Controller類,繼承Tpl類,文件名叫:controller.class.php 代碼如下:/Controller的控制基類class Controller extends Tplpublic
7、 function _construct()parent:_construct();/*Controller初始化方法(在這個(gè)方法里根據(jù)參數(shù)a的值決定調(diào)用對(duì)應(yīng)的方法) * */public function init()/獲取a參數(shù)的值$a = isset($_GET"a")?$_GET"a":"index" /默認(rèn)值為index/判斷當(dāng)前Controller是否存在此方法if(method_exists($this,$a)/調(diào)用此方法$this->$a();elsedie("沒有找到$a對(duì)應(yīng)的方法");十.
8、在最外層,創(chuàng)建一個(gè)index.php的入口文件<?php/網(wǎng)站的主入口程序/自動(dòng)加載類function _autoload($name)$name = strtolower($name);/轉(zhuǎn)成小寫if(file_exists("./controller/$name.class.php")require("./controller/$name.class.php");elseif(file_exists("./model/$name.class.php")require("./model/$name.class.php
9、");elseif(file_exists("./ORG/$name.class.php")require("./ORG/$name.class.php");elseif(file_exists("./libs/".ucfirst($name).".class.php")require("./libs/".ucfirst($name).".class.php");elseif(file_exists("./libs/sysplugins/$name.php
10、")require("./libs/sysplugins/$name.php");elsedie("錯(cuò)誤:沒有找到對(duì)應(yīng)$name類!");/數(shù)據(jù)連接配置文件require("./configs/config.php");/獲取參數(shù)m的值,并創(chuàng)建對(duì)應(yīng)的Controller對(duì)象$mod = isset($_GET'm')?$_GET'm':"index"/拼裝Controller類名$classname = ucfirst($mod)."Controller"
11、;/創(chuàng)建對(duì)應(yīng)的Controller對(duì)象$controller = new $classname();/執(zhí)行Controller的初始化(Controller入口)$controller->init();十一.在configs的目錄下創(chuàng)建一個(gè)config.php的配置文件7. 測(cè)試:-1. 在Controller目錄下創(chuàng)建一個(gè)indexcontroller.class.php文件/* 網(wǎng)站入口的主Controller類*/class IndexController extends Controller/默認(rèn)入口方法public function index()$this->assig
12、n("title","MVC的測(cè)試界面");$this->display("index.html");十二.在view目錄下創(chuàng)建index.html模板頁面<html><head><title><$title></title></head><body><h2><$title></h2></body> </html>十三.搭建MVC結(jié)構(gòu)(使用mvc設(shè)計(jì)模式搭建的框架) 基于MVC,解耦合
13、(高內(nèi)聚,低耦合),優(yōu)點(diǎn):易維護(hù)、易擴(kuò)展十四.內(nèi)聚性又稱塊內(nèi)聯(lián)系。指模塊的功能強(qiáng)度的度量,即一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量。若一個(gè)模塊內(nèi)各元素(語名之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就越高。十五.耦合性也稱塊間聯(lián)系。指軟件系統(tǒng)結(jié)構(gòu)中各模塊間相互聯(lián)系緊密程度的一種度量。模塊之間聯(lián)系越緊密,其耦合性就越強(qiáng),模塊的獨(dú)立性則越差。模塊間耦合高低取決于模塊間接口的復(fù)雜性、調(diào)用的方式及傳遞的信息十六.本MVC模式采用的是單一入口:如:http:/localhost/lamp120/mvc/index.php?m=stu&a=add /打開學(xué)生信息的添加界面其中m的值stu表示訪問的是StuController a的值add表示是方法(動(dòng)作)就是訪問StuAction的add方法。localhost/mvc/index.php?m
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 分期付款服務(wù)合同的簽訂合同簽訂依據(jù)
- 購銷旅游帳篷協(xié)議書
- 紅磚購買合同范本
- 土地整治合同
- 贊助商與主辦方合作協(xié)議
- 權(quán)威保姆服務(wù)合同案例
- 污水泵購銷合同
- 出租車司機(jī)的責(zé)任心
- 中介方違反合同的賠償責(zé)任
- 工程裝飾裝修合同
- 福建省泉州市南安市2023-2024學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試題(含解析)
- 初一數(shù)學(xué)寒假銜接班(寒假補(bǔ)課講義)
- 疼痛科護(hù)士的職業(yè)規(guī)劃與發(fā)展空間
- 浙江省杭州市西湖區(qū)2023-2024學(xué)年四年級(jí)上學(xué)期期末科學(xué)試卷
- 醫(yī)院人文培訓(xùn)課件
- 刑事辯護(hù)與刑事辯護(hù)策略
- 小學(xué)英語新思維朗文2A知識(shí)清單總結(jié)期末復(fù)習(xí)資料
- 班級(jí)工作計(jì)劃班級(jí)現(xiàn)狀分析報(bào)告
- 北京版二年級(jí)語文上冊(cè)期末綜合測(cè)試卷含答案
- 2023年遼寧省工程咨詢集團(tuán)有限責(zé)任公司招聘筆試參考題庫含答案解析
- 03 寫景散文閱讀訓(xùn)練-20232024學(xué)年七年級(jí)語文上冊(cè)知識(shí)(考點(diǎn))梳理與能力訓(xùn)練(解析)
評(píng)論
0/150
提交評(píng)論