




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、像MVC一樣的輕量級結(jié)構(gòu)在PHP中的應(yīng)用文獻翻譯題 目基于PHP的校園C2C二手交易網(wǎng)站的設(shè)計與實現(xiàn)學(xué)生姓名張烽專業(yè)班級信息與計算科學(xué)專業(yè)12-01學(xué) 號541210010151院(系)數(shù)學(xué)與信息科學(xué)學(xué)院指導(dǎo)教師(職稱)時海亮(副教授)完成時間 2016年3月15日1像MVC一樣的輕量級結(jié)構(gòu)在PHP中的應(yīng)用王關(guān)華計算機科學(xué)與工程學(xué)院東南大學(xué)南京,中國wghyy333 摘 要:這篇論文介紹了一個像mvc一樣的輕量級php編程格式,這種格式結(jié)合了傳統(tǒng)的php語法格式以及php的mvc結(jié)構(gòu),這種結(jié)構(gòu)結(jié)合了兩者的優(yōu)點優(yōu)化了php編程。這種想法是基于在傳統(tǒng)的php編程格式中添加mvc架構(gòu)得以實現(xiàn)的。通過
2、使用簡單的文檔類來實現(xiàn)相應(yīng)的模型、視圖和控制器的功能,這種新的格式的實現(xiàn)是結(jié)合了類包和功能包的主題。本文提出的所有算法都進行了測試并驗證了其可行性。此外,也將分析和判斷這種新格式的前景。 關(guān)鍵字:PHP/MVC/輕量級/面向?qū)ο缶幊? 介紹面向?qū)ο缶幊淌且环N使用對象的規(guī)范性的編程方法,這種對象是一種由數(shù)據(jù)字段和方法交互在一起的數(shù)據(jù)結(jié)構(gòu),我們使用這種數(shù)據(jù)結(jié)構(gòu)來設(shè)計應(yīng)用程序和計算機程序,編程技術(shù)主要包括的功能,如:數(shù)據(jù)抽象、封裝、模塊化、多態(tài)性,和繼承。現(xiàn)在許多現(xiàn)代編程語言都支持面向?qū)ο缶幊獭W詮陌衙嫦驅(qū)ο竽P团c真實世界的目標對應(yīng)起來的這種方法提議出來,面向?qū)ο笤诰幊毯蛙浖こ谭矫娉錾谋憩F(xiàn)導(dǎo)致越
3、來越多的組織應(yīng)用它來執(zhí)行他們的應(yīng)用程序和用來改進各種各樣的編程語言。然而作為最大的web腳本語言之一,自從1994年創(chuàng)立以來,php經(jīng)歷了從制作個人主頁的工具轉(zhuǎn)變?yōu)楝F(xiàn)在的混合C、Java、Perl并且具有自主創(chuàng)新的獨特的語言。為了滿足編程方法發(fā)展進步的目的,因此最近的php 4.0版本增加了面向?qū)ο蟮奶匦裕c其在小型web站點、輕量級的應(yīng)用程序和大型站點的前端的突出表現(xiàn)相比,面向?qū)ο缶幊痰奶卣骺瓷先ズ孟癫皇悄敲吹娜缫狻?MVC模型,在1979 年,由trygve Reenskaug編輯描述而來,然后應(yīng)用于施樂帕洛阿爾托研究中心的Smalltalk,因此它并不是一個全新的概念,在web應(yīng)用程序
4、的設(shè)計中,mvc通過web模板系統(tǒng)的執(zhí)行來作為web視圖的組件,在web應(yīng)用程序中能經(jīng)常看到mvc模式,它的視圖一般就是由app生成的html和xhtml。控制器則接收post或get的輸入并且決定要做什么,然后把結(jié)果交給域?qū)ο螅茨P停P桶I(yè)務(wù)規(guī)則并知道如何執(zhí)行特定的任務(wù),如處理一個新的訂閱,誰來控制html生成組件,(如模板引擎、xml管道、Ajax回調(diào)等),為了讓php符合面向?qū)ο缶幊蹋琺vc模型帶來的體系結(jié)構(gòu)使之再進一步,雖然這個想法改進了php代碼的重用和編程效率,但這個架構(gòu)有一個明顯的缺陷降低了運營效率。面向?qū)ο蟮膒hp迫切需要一種新形式來解決平衡效率和重用的問題。2 典型的
5、php模型和mvcA典型php模式的介紹因為php是一種腳本語言的特性,它是嵌入在服務(wù)器中的html文檔中實現(xiàn)的,這將導(dǎo)致典型的面向過程的php編程方式,將根據(jù)已經(jīng)被設(shè)計好的傳統(tǒng)的html格式來嵌入php程序,它在數(shù)據(jù)層混合的代碼像數(shù)據(jù)庫查詢的語句,表示層代碼像html,一個典型的php程序如下:<!DOCTYPE html><html><head><meta charset="utf-8" /><title>PHP Test</title></head><body><?p
6、hpecho 'Hello World'/* other PHP functions */?></body></html>在這種模式下,所有的操作都寫在一起,當然,這樣就節(jié)約了頁面請求的時間,但是如果有一個很復(fù)雜的頁面,程序員上百行php代碼都不能寫好的話,在這種情況下,程序員將無法更新或重用這種混亂的html,php代碼甚至是javascript文件。B介紹mvc模式由于面向?qū)ο蟮姆椒ㄊ管浖哂兄赜眯院腕w系結(jié)構(gòu),所以mvc模式應(yīng)用了起來,mvc是一種軟件結(jié)構(gòu),也是現(xiàn)在軟件工程中被考慮的一種結(jié)構(gòu),模式分離“域邏輯”(關(guān)于用戶的應(yīng)用程序邏輯)從用戶界
7、面(輸入和顯示)允許獨立開發(fā)、測試并維護每個(分離的關(guān)注點),這樣就節(jié)省了時間、會創(chuàng)造更穩(wěn)定的程序,以及避免了重復(fù)編碼和促進快速程序應(yīng)用程序開發(fā)(RAD),mvc是一種分離了業(yè)務(wù)邏輯和UI的結(jié)構(gòu),允許一方變化而另一方不變,在mvc結(jié)構(gòu)中,每一部分都有它自己獨立的功能。a M:模型管理著應(yīng)用程序的操作和數(shù)據(jù),并對其狀態(tài)消息做出回應(yīng)(通常來自視圖),回應(yīng)相應(yīng)的命令來改變狀態(tài)(通常來自控制器),在事件驅(qū)動系統(tǒng)中,當消息改變以便他們可以做出改變的時候模型將會通知觀察員(通常為視圖)。b V:為了進行交互視圖將使模型有一個合適的窗口,通常是一個用戶界面元素,一個模型可以有多個不同的視圖存在實現(xiàn)多個不同的
8、功能,視圖通常與顯示表面一一對應(yīng)并且知道如何呈現(xiàn)它。c C:控制器接收一個輸入并通過調(diào)用模型上的一個對象做出一個反應(yīng),控制器從用戶那里接收一個輸入并指示模型和窗口基于此輸入做出一定的操作。從本質(zhì)上來說,mvc拆分了一個程序的發(fā)展過程,所以每個部分可以單獨的進行修改而不會影響其他部分,mvc模式因此把m從v中分離了出來,之前m和v是混合在一起的,這種分離結(jié)構(gòu)的機制如下圖一所示:圖1 mvc的機制3 傳統(tǒng)php與mvc的比較由于以上列出的特征,傳統(tǒng)結(jié)構(gòu)具有以下的優(yōu)點:a代碼結(jié)構(gòu)很簡單,容易掌握和使用。b不同的代碼可以很容易寫在同一個頁面上。cphp程序、html頁面和其他的內(nèi)容可以被合并在一頁上,
9、減少頁面請求和提高效率。然而傳統(tǒng)的php結(jié)構(gòu)也有以下的缺點a過分自由的代碼格式導(dǎo)致難以閱讀和管理。b瀑布模型和快速發(fā)展中使用傳統(tǒng)的php結(jié)構(gòu)更加容易創(chuàng)建“意大利面條式代碼”,使得難以維護和重用。盡管傳統(tǒng)的php代碼有很多的優(yōu)點,但它的缺點會導(dǎo)致一些不能被忽視的嚴重的問題,相反mvc模型可以很好的解決這些問題,mvc具有以下的優(yōu)點:a后臺的php代碼和html頁面分離是為了使代碼有更加清晰的結(jié)構(gòu)并且方便調(diào)試。b可以很好的維護模型和類的代碼。c規(guī)整開發(fā)和重點數(shù)據(jù)的抽象是方便管理項目。具有上面的優(yōu)勢以后,mvc就可以很好的從軟件工程的角度來解決這些傳統(tǒng)php結(jié)構(gòu)所具有的問題,然而也并不是說mvc沒有
10、缺點,它也有以下的一些缺點:a在編碼的早期將付出大量的時間。bmvc控制器引擎加載的速度很慢。c涉及復(fù)雜的后臺執(zhí)行,將在一定的程度上減少頁面的運行效率。從兩者的比較可以看出從軟件個工程的角度來看mvc模式比傳統(tǒng)的php格式要優(yōu)越,使用mvc時一個php應(yīng)用程序可以安排使用面對對象的方法,這樣可以方便軟件開發(fā)者作為一個項目來進行管理,然而這種方便是以犧牲效率作為代價的,小型甚至是中等規(guī)模的應(yīng)用程序強調(diào)運行時的效率,mvc模式可能不是很合適,原因是他將增加額外的開銷,使應(yīng)用程序更為復(fù)雜,更確切是說是,mvc將會在頁面發(fā)送強求的服務(wù)器上增加一個引擎,最初,php是一種高效的解決方案,但由于mvc添加
11、了一個引擎,或多或少的影響了它的速度,因為每次發(fā)送請求到服務(wù)器都要開啟引擎也是一筆不小的開銷。4 輕量級仿mvc格式為了把可讀性、可維護性、可重構(gòu)以及應(yīng)用程序執(zhí)行效率所有這些東西都考慮進來,我們提出一類輕量級的mvc結(jié)構(gòu),輕量級mvc也可以被定義為一個mvc結(jié)構(gòu),與傳統(tǒng)的mvc結(jié)構(gòu)一樣,輕量級mvc也強調(diào)web系統(tǒng)的功能分開,類似于原始的mvc一樣也由三部分組成,另一方面,輕量級mvc還是與原始的有很多的不同,在輕量級mvc中m、v、c是分別對應(yīng)于*.phtml, *.class (or *.class.php為了安全)和*.php文件。輕量級mvc以仿照軟件工程的思想,使php代碼有更多的可
12、讀性、可維護性和可重用性,此外,它更加的容易進行面向?qū)ο蟮脑O(shè)計,從而導(dǎo)致更加容易進行編碼,而且沒有必要向服務(wù)器添加引擎,執(zhí)行效率比原始的mvc模式好多了,盡管如此,由于類的使用和封裝,它會產(chǎn)生冗余代碼,由于這個原因,輕量級mvc的效率在一定程度上會低于原始的php代碼,幸運的是,當我們把原始的mvc模式進行改進后,這種影響只是微不足道的。為了顯示這種輕量級的類mvc結(jié)構(gòu)優(yōu)于普遍使用的mvc結(jié)構(gòu),在這里我們把大家正在使用的mvc結(jié)構(gòu)和輕量級的mvc結(jié)構(gòu)進行一個比較。圖2顯示了常用的mvc結(jié)構(gòu)框架,在這個框架中,控制器類調(diào)用模型類和函數(shù)來完成特定的功能,然后改控制器將得到一個返回消息,接下來它將會
13、調(diào)用一個視圖文件來作為回復(fù),該控制器從模型中使用返回消息來填充視圖,然后發(fā)送一個最終的頁面到客戶端,除此之外,一些模型類有他們自己也有調(diào)用一個視圖頁面的功能。圖2 mvc的結(jié)構(gòu)圖3 類mvc輕量級結(jié)構(gòu)輕量級類mvc結(jié)構(gòu)如圖3所示,調(diào)用的功能已經(jīng)得到簡化,在這種結(jié)構(gòu)中,控制器不再是一個包裝的類對象,但一個*.php文件是以傳統(tǒng)的格式進行書寫,但這個*.php文件包括*.class.php文件作為模型和*.phtml文件作為視圖,因為在輕量級應(yīng)用中,大多數(shù)*.php頁面含有很少會在其他文件中使用的各種不同的功能,這些文件與其他文件有很少的關(guān)系,在這個輕量級類mvc結(jié)構(gòu)中,每個控制器的不同的功能都具
14、有自己的*.php文件,在這個文件中,*.class.php和*.phtml文件也加入在一起,這個類的功能的結(jié)果就是直接從*.class.php文件進入到*.phtml文件,這種方式下,在發(fā)展期間,控制器、模型和視圖分別開發(fā)和維護,但在使用過程中,這種結(jié)構(gòu)移除了封裝的控制器類,這樣可以使應(yīng)用程序不必調(diào)用太多在其他控制文件中的的功能,與此同時,這種結(jié)構(gòu)移除了對視圖調(diào)用的功能,這個功能可以通過php的include或require函數(shù)實現(xiàn),從而使輕量級應(yīng)用不至于過度的包裝,提高了效率。一個典型的php文件組織是這樣的:<?php/ include Model filesrequire_onc
15、e(“model/samplemodel.class.php”)ontroller operationserations using model classesire_once(“view/sampleview.phtml”)?>從以上我們可以看出,相比于傳統(tǒng)的php格式,這種輕量級類mvc結(jié)構(gòu)也有他的優(yōu)勢,在這種仿mvc結(jié)構(gòu)中的功能是封裝在類中,使代碼具有更高的可讀性和重用性,雖然三個部分包含在一起,但m、v、c三部分在不同的文件中,可以由不同的程序員進行開發(fā),這對于一個軟件工程來說是一件好事。5 總結(jié)由于B/S應(yīng)用的發(fā)展,后臺程序變得越來越復(fù)雜,傳統(tǒng)的php格式雖然在執(zhí)行速度上有優(yōu)勢
16、,但是不能編寫復(fù)雜的代碼,為了使一個php程序從軟件工程角度來看具有更好的可讀性、可維護性和可重用性,mvc結(jié)構(gòu)使用面向?qū)ο蟮姆椒☉?yīng)用于復(fù)雜的php項目,但是對于具有簡單功能的輕量級應(yīng)用,這種mvc模式太臃腫了,然而輕量級仿mvc結(jié)構(gòu)能滿足輕量級應(yīng)用對于面向?qū)ο蟮男枨螅⑶夷茉谙嗤臅r間內(nèi)確保效率,雖然是比傳統(tǒng)的結(jié)構(gòu)慢一點,但這種結(jié)構(gòu)從項目管理上來說可以節(jié)約很多的時間。參考文獻1 Paul .J.Braam,適用于web編程中php的設(shè)計模式EB/OL,/docs/Programming/PHP/Design_patterns_applied_to_web_programming_in_PHP.pdf。2 KevinMcArther,PHP:模式,框架,測試,和更多內(nèi)容3 亞歷山德魯·利維烏馬里內(nèi)斯庫
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川職業(yè)技術(shù)學(xué)院《高級機器學(xué)習(xí)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧城市建設(shè)職業(yè)技術(shù)學(xué)院《人類疾病動物模型》2023-2024學(xué)年第一學(xué)期期末試卷
- 江陰職業(yè)技術(shù)學(xué)院《數(shù)字矢量設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘭州城市學(xué)院《結(jié)構(gòu)力學(xué)一》2023-2024學(xué)年第二學(xué)期期末試卷
- 外墻施工承包合同
- 商務(wù)居間合作合同
- 智慧交通智能停車場管理系統(tǒng)
- 勞動合同應(yīng)屆畢業(yè)生實習(xí)協(xié)議書
- 《天氣現(xiàn)象》天氣與植物課件
- 土建程施工合同范本
- 醫(yī)院保潔服務(wù)總體保潔服務(wù)方案
- 第19課《牧場之國》第2課時(分層作業(yè))部編版五年級語文下冊
- 世界各國盤點美食概要課件
- 眼科護理中的安全與風(fēng)險管理
- 索菲亞全屋定制培訓(xùn)課件
- 二十四節(jié)氣與農(nóng)事
- 《社會網(wǎng)絡(luò)分析法》課件
- word個人簡歷空白
- 2024年江蘇安東控股集團有限公司招聘筆試參考題庫含答案解析
- 如何在Python中創(chuàng)建循環(huán)結(jié)構(gòu)
- 新生兒吸入綜合征護理查房
評論
0/150
提交評論