999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MVC模式下的開發(fā)框架建設(shè)與改進(jìn)

2017-06-07 21:12:41余楊奎
海峽科技與產(chǎn)業(yè) 2017年5期

余楊奎

摘 要:計算機(jī)網(wǎng)絡(luò)迅速發(fā)展,Web成為人們?nèi)粘I钪幸粋€重要平臺,在網(wǎng)站上人們除了可以獲得諸多最新資訊,還可以在線購物、投資理財以及檔案管理等;企業(yè)也對Web系統(tǒng)更加依賴,因而web系統(tǒng)的開發(fā)備受人們關(guān)注,而PHP在Web開發(fā)中占據(jù)著重要地位。目前,傳統(tǒng)的php開發(fā)模式把數(shù)據(jù)層代碼、HTML表示層代碼混合,無法適應(yīng)系統(tǒng)開發(fā)的需求。本文結(jié)合信融天下互聯(lián)網(wǎng)金融P2P網(wǎng)貸系統(tǒng)和湛江電大學(xué)生干部數(shù)字化檔案系統(tǒng)的實現(xiàn),對基于MVC設(shè)計模式的PHP實現(xiàn)—THINKPHP框架建設(shè)和改進(jìn),可以為PHP的開發(fā)提供了一個Web的應(yīng)用程序框架,從開發(fā)框架上將Web應(yīng)用程序進(jìn)行分離,即表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層代碼完全分開,并且可以在框架上為數(shù)據(jù)訪問設(shè)置模型,提高了Web應(yīng)用程序開發(fā)效率,使其可靠性、可擴(kuò)展性、可維護(hù)性等特點得到增強。關(guān)鍵詞:MVC設(shè)計模式;PHP;開發(fā)框架

0 引言

隨著互聯(lián)網(wǎng)迅猛發(fā)展,使得動態(tài)網(wǎng)站建設(shè)要求更高,在網(wǎng)站開發(fā)方式上傳統(tǒng)的模式已經(jīng)無法滿足人們的需要,MVC模式對這個問題進(jìn)行來了很好的解決[1]。MVC作為一種開發(fā)模式在解決大型Web項目問題上發(fā)揮了重要作用。PHP是一種專業(yè)的網(wǎng)站的開發(fā)語言,然而現(xiàn)有的PHP開發(fā)模式尚未有成熟、統(tǒng)一的規(guī)范,系統(tǒng)水平的高低取決于開發(fā)人員的專業(yè)素質(zhì)及經(jīng)驗等,已經(jīng)無法滿足人們在開發(fā)效率、可擴(kuò)展性、可靠性及可維護(hù)性等方面快速房展的需求[2]。因而把框架機(jī)制引入PHP的開發(fā)成為人們關(guān)注的重點。

1 MVC設(shè)計模式

1.1 MVC設(shè)計模式在Web中的應(yīng)用

MVC(Model-View-Controller)把數(shù)據(jù)處理、數(shù)據(jù)表示及程序輸入輸出控制進(jìn)行分離,對不同部分對象間的通信方式進(jìn)行了描述,使其不受其它數(shù)據(jù)模型及其方法的影響,從而讓程序結(jié)構(gòu)更加清晰并具有靈活性[3]。MVC把應(yīng)用程序的輸入、輸出、處理強行分離,MVC的應(yīng)用程序分為模型、控制器及視圖三個部件[4]。MVC組件的功能及關(guān)系如圖1所示。

Web應(yīng)用程序從傳統(tǒng)意義上來說一般都是由ASP/PHP進(jìn)行創(chuàng)建的。它們把數(shù)據(jù)層代碼、HTML表示層代碼混合,即便開發(fā)者經(jīng)驗豐富、水平較高,從表示層把數(shù)據(jù)分離也具有一定的困難[5]。MVC把它們從根本上進(jìn)行了強制分離,雖然MVC的構(gòu)造工作量變大,但仍就有諸多優(yōu)點。其一,具有低耦合性。視圖層、業(yè)務(wù)層分離,視圖層代碼更改不需要對模型、控制器代碼進(jìn)行修改。同樣,改變業(yè)務(wù)流程或者規(guī)則只要對MVC的模型改動就可以,不需要更改視圖層代碼。模型和控制器、視圖是分離的,因而應(yīng)用程序的數(shù)據(jù)層及業(yè)務(wù)規(guī)則改變十分容易。其二,具有高重用性、可適用性。科學(xué)技術(shù)水平不斷提高,訪問應(yīng)用程序的方式變得多種多樣。同樣一個服務(wù)器端的代碼MVC模式可以讓多種視圖進(jìn)行訪問如Web瀏覽器等。模式只能夠?qū)?shù)據(jù)未格式化的部分進(jìn)行返回,因而為不同界面的使用提供了便利。其三,具有快速開發(fā)的能力,MVC模式可以讓界面設(shè)計人員對表現(xiàn)形式更加關(guān)注,程序員對開發(fā)業(yè)務(wù)邏輯更加重視,使系統(tǒng)的前端、后端同時開發(fā),使系統(tǒng)開發(fā)時間大為縮短。其四,具有可維護(hù)性。視圖層、業(yè)務(wù)邏輯層進(jìn)行分離,使得它們之間聯(lián)系只能通過接口,任何部分內(nèi)部都不會對其他部分產(chǎn)生影響,從而使Web應(yīng)用具有可維護(hù)性。其五,為軟件工程化管理提供了便利。不同層可各司其職,一個層面的應(yīng)用不同但也有某些相同特征,為軟件工程化管理提供了便利。

1.2 MVC設(shè)計模式的PHP實現(xiàn)

PHP對象在服務(wù)器端不能跨頁面存在,所有PHP實際上是沒有辦法實現(xiàn)傳統(tǒng)的MVC架構(gòu)的,其問題主要在模型上得到體現(xiàn),如在Java中,數(shù)據(jù)模型是獨立的,不同于業(yè)務(wù)邏輯、表現(xiàn)邏輯等,它可以在服務(wù)器端跨頁面存在,JavaBean 就是在這個方面發(fā)揮作用[6]。PHP進(jìn)程在內(nèi)存中不能長期存在,只能在PHP頁面剛剛執(zhí)行時創(chuàng)建,頁面執(zhí)行結(jié)束,則該進(jìn)程已經(jīng)結(jié)束,基于這種情況,模型不能進(jìn)行直接實現(xiàn)。

因PHP語言跨頁面無法存在,PHP開發(fā)框架中使用被動MVC更為適合。在被動MVC模式上,模型身處MVC結(jié)構(gòu)下卻不知。也就是說模型是一個普通的對象,和MVC中的其他部分是沒有關(guān)聯(lián)的。這樣的話,模型就不用再跨頁面存在,改變了使用MVC導(dǎo)致的效率低下現(xiàn)象。

被動MVC模式和傳統(tǒng)意義上的主動MVC模式不同,模型是一個簡單的獨立的對象,因而自身的改變不能傳達(dá)給視圖;視圖也無法對模型的更新作出訂閱及監(jiān)視等。視圖只能夠?qū)刂破鱾魉偷臄?shù)據(jù)進(jìn)行使用或者在得到控制器通知之后再去模型進(jìn)行最新數(shù)據(jù)的提取。所以被動MVC模式下,控制器還要把模型更新之后的數(shù)據(jù)傳送給視圖,因而在設(shè)計上相較于主動MVC更加困難。

2 基于MVC設(shè)計模式的開發(fā)框架建設(shè)與改進(jìn)

2.1 框架入口設(shè)計

傳統(tǒng)的Web應(yīng)用程序中,一般是以頁面或者文件為基礎(chǔ)的,接入模式一般采取多點接入。這種接入模式可以讓用戶對系統(tǒng)的文件進(jìn)行直接訪問,并且這些文件可以對用戶的請求進(jìn)行處理并把這些處理的結(jié)果反應(yīng)給用戶[7]。一個系統(tǒng)請求入口就有很多。這種接入方式給用戶顯示的接口非常多,容易帶來安全隱患,對全局的處理、優(yōu)化等起了不利影響。

在MVC設(shè)計模式上實現(xiàn)的THINKPHP框架,可以實現(xiàn)傳統(tǒng)的多點接入模式,同樣也可以進(jìn)行配置,設(shè)置成為單點接入模式。

單點接入模式把Web應(yīng)用應(yīng)用程序的全部請求都集中到一個腳本文件即所有的HTTP請求都由入口文件統(tǒng)一進(jìn)行接受。用戶和系統(tǒng)進(jìn)行交互的入口只有這一個。這種接入模式具有許多優(yōu)點,其一,方便全局處理,如對數(shù)據(jù)進(jìn)行安全監(jiān)測等。其二,可以使程序結(jié)構(gòu)更加清晰,方便進(jìn)行管理。入口進(jìn)行集中控制,程序人員只需要負(fù)責(zé)開發(fā)自己的模塊就可以,們不需要對程序運行進(jìn)行協(xié)調(diào)。其三,保證安全,采用單點入口模式,只開放需要開放的模塊,模塊的訪問地址都是同一個php文件,用戶難以辨別,可以保證系統(tǒng)的安全性。另外,單點接入也使系統(tǒng)的一些耦合缺陷不對用戶進(jìn)行開放。相對于多點接入模式來講,多點模式采用不同的php文件訪問web,URL相對簡單整潔,但是不方便同一控制,即便可以使用公用配置文件,倘若項目太大,公用配置也不是好的解決方案。

2.2 控制器設(shè)計

在MVC設(shè)計模式中,控制器主要作用是負(fù)責(zé)接受用戶輸入的數(shù)據(jù)并調(diào)用模型和視圖功能去完成用戶提出的需求。當(dāng)用戶通過web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不做任何處理,也不會輸出任何東西。它只接受請求并決定調(diào)用哪個模型構(gòu)件去處理請求,然后決定用哪個視圖來顯示模型處理返回的結(jié)果[8]。

THINKPHP的控制器層由核心控制器和業(yè)務(wù)控制器組成,核心控制器由系統(tǒng)內(nèi)部的App類完成,負(fù)責(zé)應(yīng)用(包括模塊和操作)的調(diào)度控制,包括HTTP請求攔截和轉(zhuǎn)發(fā)、加載配置等;業(yè)務(wù)控制器則由用戶定義的Action類或者其他控制器類完成。關(guān)鍵代碼如下:

if(defined('GROUP_NAME')){

if(is_file(CONF_PATH.GROUP_NAME.'/config.php'))

C(include CONF_PATH.GROUP_NAME.'/config.php');// 加載分組配置文件

if(is_file(COMMON_PATH.GROUP_NAME.'/function.php'))

include COMMON_PATH.GROUP_NAME.'/function.php';// 加載分組函數(shù)文件

}

業(yè)務(wù)控制器把客戶請求和業(yè)務(wù)邏輯分開,業(yè)務(wù)控制器是由用戶自定義的Action.php文件來實現(xiàn)的,業(yè)務(wù)控制器全部由Action類派生而來,繼承了所有Action類的方法,把數(shù)據(jù)傳送給視圖的抽象方法是$this->display。關(guān)鍵代碼如下:

class Abstract extends Action {

public function index(){

$this->display();

}

}

2.3 數(shù)據(jù)操作

PHP支持的數(shù)據(jù)庫眾多,典型的數(shù)據(jù)庫就是 MySql,對于接口支持不具有統(tǒng)一性[9]。

THINKPHP框架對數(shù)據(jù)庫增刪改操作進(jìn)行了封裝,簡化了數(shù)據(jù)庫操作,使得開發(fā)人員不需要學(xué)習(xí)SQL語句的相關(guān)語法,只需使用GetLastSql()指令將需要操作的SQL語句輸出到瀏覽器調(diào)整即可。開發(fā)人員可以有更多的精力用在系統(tǒng)業(yè)務(wù)邏輯上,不再考慮SQL的語法。進(jìn)行簡單封裝還降低的程序的書寫錯誤,降低了調(diào)試出錯概率。

2.4 視圖技術(shù)

在THINKPHP中,利用視圖模板技術(shù)把數(shù)據(jù)層、HTML表示層代碼進(jìn)行分離。Web服務(wù)器接收URL請求之后,首先需要確認(rèn)的是不是第一次對URL進(jìn)行請求,第一次請求的URL,首先對模板進(jìn)行調(diào)用,判斷模版主題,然后再由控制器代碼等進(jìn)行編譯,最后用戶視圖生成數(shù)據(jù)并輸出;不是第一次則在已具有的用戶視圖上進(jìn)行直接定位,也要判斷模版主題,這種請求節(jié)省解析以及讀取的時間。框架會使系統(tǒng)偽靜態(tài)化,考慮使用rewrite篩選器完成。加快了程序的運行速度,提高了效率。關(guān)鍵代碼如下:

function isMobile() {

// 如果有HTTP_X_WAP_PROFILE則一定是移動設(shè)備

if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])){

return true;

}

return false;

}

$info=isMobile();

if($info){ $theme = 'phone'; //手機(jī)模板

}else{$theme = 'default'; //默認(rèn)模板

}

3 結(jié)語

社會不斷進(jìn)步,互聯(lián)網(wǎng)在全球范圍內(nèi)普及,網(wǎng)絡(luò)應(yīng)用開發(fā)技術(shù)發(fā)展迅猛,Web應(yīng)用在人們的生活、工作中產(chǎn)生了較大的影響,許多的信息、數(shù)據(jù)庫系統(tǒng)等逐漸轉(zhuǎn)移到互聯(lián)網(wǎng)。人們?nèi)粘I詈蚖eb應(yīng)用緊密相關(guān)。但目前Web應(yīng)用程序的開發(fā)已經(jīng)不能適應(yīng)Web應(yīng)用增強的需求,為了提高Web應(yīng)用程序的開發(fā)效率,并促使其可靠性、可擴(kuò)展性、可維護(hù)性的提高,Web應(yīng)用程序開發(fā)員引入了框架,提高了應(yīng)用程序開發(fā)的質(zhì)量和效率。本文結(jié)合信融天下互聯(lián)網(wǎng)金融P2P網(wǎng)貸系統(tǒng)和湛江電大學(xué)生干部數(shù)字化檔案系統(tǒng)的實現(xiàn),基于MVC設(shè)計模式對PHP快速開發(fā)框架進(jìn)行分析研究,提出了MVC設(shè)計模式的PHP實現(xiàn)即THINKPHP框架,THINKPHP框架把用戶界面、業(yè)務(wù)邏輯進(jìn)行強制分離,使系統(tǒng)開發(fā)設(shè)計框架更加清晰并為其提供了改進(jìn)方法。

本文系2015年度湛江市科學(xué)技術(shù)局重大科技專項“信融天下互聯(lián)網(wǎng)金融P2P網(wǎng)貸系統(tǒng)研發(fā)及平臺運營”(項目編號:15A102)、2015年度湛江市廣播電視大學(xué)系統(tǒng)科研項目“基于市級電大學(xué)生干部數(shù)字化檔案系統(tǒng)的研究”(立項編號:X201505)的階段性成果。

主站蜘蛛池模板: 婷婷伊人久久| 国产精品粉嫩| 97无码免费人妻超级碰碰碰| 91黄色在线观看| 国产精品亚洲а∨天堂免下载| 久996视频精品免费观看| 91成人在线观看视频| 亚洲色婷婷一区二区| 国产手机在线小视频免费观看 | 九九线精品视频在线观看| 日韩高清成人| 国产欧美日韩va| 美女一级免费毛片| 中文毛片无遮挡播放免费| 日韩欧美中文| 伊人久久久久久久久久| 国产成人喷潮在线观看| 亚洲国产综合精品一区| 国产凹凸视频在线观看| 精品欧美日韩国产日漫一区不卡| 色吊丝av中文字幕| 亚洲第一色视频| 免费无遮挡AV| 亚洲国产系列| 欧美一级高清免费a| 中文字幕日韩丝袜一区| 在线国产你懂的| 任我操在线视频| 999福利激情视频| 亚洲三级片在线看| 亚洲精品图区| 在线观看av永久| 亚洲精品免费网站| 欧美午夜一区| 亚洲一级毛片免费看| 亚洲无码四虎黄色网站| 国产无码高清视频不卡| 久久国产精品77777| 欧美日韩免费在线视频| 免费一级毛片| 成人韩免费网站| 少妇精品在线| 日韩精品专区免费无码aⅴ| 无码高潮喷水在线观看| 亚洲人成网线在线播放va| 91外围女在线观看| 欧美成在线视频| 四虎成人精品| 亚洲综合中文字幕国产精品欧美| 刘亦菲一区二区在线观看| 国产精品永久久久久| 激情乱人伦| 五月天久久婷婷| 午夜老司机永久免费看片| 尤物精品视频一区二区三区| 欧美激情首页| 极品国产一区二区三区| 国内精品九九久久久精品| 亚洲男人的天堂视频| 国产乱人乱偷精品视频a人人澡 | 全部毛片免费看| 国产黄色片在线看| 91色老久久精品偷偷蜜臀| 永久免费av网站可以直接看的 | 91成人在线免费观看| 亚洲一区网站| 国产精品美女免费视频大全| 国内精品一区二区在线观看| 呦系列视频一区二区三区| 亚洲一区二区约美女探花| 亚洲狠狠婷婷综合久久久久| 中文字幕亚洲综久久2021| 成人中文字幕在线| 一区二区在线视频免费观看| 日本成人精品视频| 永久免费AⅤ无码网站在线观看| AV熟女乱| 麻豆国产精品| 丰满人妻被猛烈进入无码| 国产菊爆视频在线观看| 在线观看国产精品第一区免费| 国产性生交xxxxx免费|