王欣
摘 要:PHP框架開發(fā)已經(jīng)成為Web系統(tǒng)發(fā)展的重要環(huán)節(jié),加強對PHP技術(shù)的研究和開發(fā)具有非常重要的意義,對于PHP技術(shù)的發(fā)展和推廣具有一定積極作用。本文對PHP框架開發(fā)的架構(gòu)進行了分析,分別從文件和參數(shù)、控制器和動作、組件和事件等方面進行了分析,介紹了PHP框架開發(fā)的關(guān)鍵技術(shù),包括MVC模式、視圖層、數(shù)據(jù)訪問層等內(nèi)容。
關(guān)鍵詞:PHP;框架開發(fā);關(guān)鍵技術(shù)
中圖分類號:TP311.5 文獻標(biāo)志碼:A
隨著計算機技術(shù)的全面發(fā)展,服務(wù)器腳本語言也在不斷進步,其中PHP技術(shù)發(fā)展的越來越快,由于PHP的簡單、適用性更加廣泛,PHP技術(shù)已經(jīng)是Web語言開發(fā)中非常重要的工具之一。但是在PHP5之前的技術(shù)都不具有非常好的適用性,因此PHP技術(shù)的發(fā)展還是落后于Java等計算機語言,加強對PHP技術(shù)的研究和推廣對PHP技術(shù)的開發(fā)和發(fā)展具有重要意義。本文首先對PHP框架開發(fā)的架構(gòu)進行了分析,分別從文件和參數(shù)、控制器和動作、組件和事件等方面進行了分析,重點介紹了PHP框架開發(fā)的關(guān)鍵技術(shù),包括MVC模式、視圖層、數(shù)據(jù)訪問層等內(nèi)容。通過對PHP框架開發(fā)關(guān)鍵技術(shù)的介紹,有利于推動PHP技術(shù)的推廣和發(fā)展。
1 PHP框架開發(fā)的架構(gòu)分析
PHP就是在HTTP發(fā)出請求時需要通過服務(wù)器端腳本PHP對這些數(shù)據(jù)資料進行管理。了解PHP框架開發(fā)就必須要了解Web架構(gòu)情況,通常將Web架構(gòu)分為3種情況,包括基于文件和參數(shù)、基于控制器和動作、基于組件和事件等這3種情況,以下對這3種架構(gòu)分別進行分析。
1.1 基于文件和參數(shù)
一般情況下,在Web系統(tǒng)中是按照腳本的功能差異,將服務(wù)器腳本放在很多功能不同的目錄中,每個腳本都有自己的URL地址。當(dāng)HTTP發(fā)出請求時,就可以按照腳本的URL地址進行訪問,同時需要在URL增加一些參數(shù),讓相應(yīng)的腳本處理這些指定的數(shù)據(jù)信息,在腳本完成數(shù)據(jù)處理后再將處理結(jié)果反饋給HTTP。這種方式比較簡單,就是通過過程開發(fā)的方式,通常會應(yīng)用在小的Web程序中。但是,由于基于文件和參數(shù)的這種腳本方式對于搜索功能來說不方便,而且每個文件處理相應(yīng)的HTTP請求,所以無法實現(xiàn)腳本的集中管理。
1.2 基于控制器和動作
Web系統(tǒng)通過采用基于控制器和動作的方式能夠服務(wù)比較成熟的用戶?;诳刂破骱蛣幼鞯拈_發(fā)方式就是先對HTTP進行解析,在通過指定的控制器對HTTP的請求進行分析處理。一般都是采用MVC模式來實現(xiàn)控制器和動作的數(shù)據(jù)處理。另外,基于控制器和動作的方式與基于文件的方式類似,都是需要采用請求和響應(yīng)的驅(qū)動方式。
1.3 基于組件和事件
基于組件和事件的Web架構(gòu)也是非常常用的方式,這種方式就是通過組件對一些事件進行處理,也就是把HTTP的訪問按照一定的程序轉(zhuǎn)換為一個事件,然后再處理這個事件,NET就是這種形式的Web架構(gòu)。但這種基于組件和事件的方式需要足夠強大的控件和IDE環(huán)境,否則就無法實現(xiàn)非常高的開發(fā)速度和重復(fù)利用的能力。
2 PHP框架開發(fā)的關(guān)鍵技術(shù)
2.1 MVC模式
在Web系統(tǒng)中,可以通過MVC模式,將數(shù)據(jù)處理、控制、數(shù)據(jù)顯示分別進行處理,形成模型、控制器、視圖等3個模塊,這3種模塊需要采用控制器進行合成,這種MVC模式能夠非常好地解決Web系統(tǒng)經(jīng)常出現(xiàn)的纏繞問題,從而使得Web系統(tǒng)的架構(gòu)更加清晰和順暢。但是MVC模式需要通過跨頁面的PHP來對模型和控制器進行連接,而在PHP完成數(shù)據(jù)分析后就會收回,無法實現(xiàn)PHP的跨頁面操作,因此要進一步對MVC模式進行優(yōu)化和技術(shù)改進。這種情況下,比較好的辦法就是在對PHP回收之前就將PHP信息存在數(shù)據(jù)庫中,然后在MVC模式需要PHP時可是隨時從數(shù)據(jù)庫中調(diào)用。但這就需要經(jīng)常調(diào)用數(shù)據(jù)庫的信息,工作效率非常低。另外一種方式就是采用被動MVC,這種方式的模型與MVC其他結(jié)構(gòu)是沒有關(guān)聯(lián)的,這就實現(xiàn)了不需要PHP訪問其他頁面,也不需要建立數(shù)據(jù)庫,大大增加了運行效率。因此,這種被動MVC模式是目前比較有效的MVC模式。
2.2 視圖層
在Web項目開發(fā)過程中,前端設(shè)計和程序設(shè)計很難達到協(xié)調(diào)一致。這就需要將頁面設(shè)計和程序設(shè)計進行分別管理,然后在統(tǒng)一協(xié)調(diào),這種方式能夠比較好地解決這個問題。一般情況下,PHP中可以利用模塊將顯示和程序進行分別處理,在采用MVC模式時模板一般在視圖層。MVC的模板可以為前端設(shè)計提供容易理解的語言,所以前端設(shè)計工作就能夠開展HTML模板的制作工作,然后PHP就可以應(yīng)用這些模板。因此,通常情況下視圖層一般使用Smarty模板,這種模板是一種比較簡單的模板,也可以利用PHP模板進行程序顯示,最終的目標(biāo)就是將前端設(shè)計和程序設(shè)計成功進行分離。
2.3 數(shù)據(jù)訪問層
PHP框架開發(fā)中處理好Web系統(tǒng)中的程序和數(shù)據(jù)庫的分離也是非常重要的。這就需要PHP框架中的數(shù)據(jù)訪問層技術(shù),這種技術(shù)能夠非常好的將程序和數(shù)據(jù)庫進行分析,也就是通過數(shù)據(jù)關(guān)系映射技術(shù)對兩者進行分離,這種技術(shù)簡稱ORM技術(shù)。數(shù)據(jù)關(guān)系映射技術(shù)是把原數(shù)據(jù)中的程序和數(shù)據(jù)庫關(guān)系映射在數(shù)據(jù)庫里面,但是由于技術(shù)的復(fù)雜性,這種映射效率也是非常低的。為降低PHP數(shù)據(jù)訪問層的復(fù)雜性,在PHP框架開發(fā)過程中活動記錄模式不斷被開發(fā)并已經(jīng)得到廣泛應(yīng)用?;顒佑涗浤J骄褪菍⒚恳粭l數(shù)據(jù)記錄都包裝為一個對象,這種模式能夠極大地提高數(shù)據(jù)庫相關(guān)程序的開發(fā)速度。但是這種方式在處理關(guān)聯(lián)表時,即使只提取一條記錄,其他與之相關(guān)的所有記錄也都會被包裝為對象,這就會造成效率的急劇下降。對于需要頻繁更新數(shù)據(jù)的情況,由于所有數(shù)據(jù)都需要被封裝為對象,更新對象屬性后將對象存入數(shù)據(jù)庫才能完成數(shù)據(jù)更新。因此,在PHP框架開發(fā)的數(shù)據(jù)訪問層中使用活動記錄模式的效果仍不理想。
對于輕量級的PHP框架,數(shù)據(jù)庫的操作更加適合采用簡化的數(shù)據(jù)庫訪問層方式。表數(shù)據(jù)入口模式與活動記錄模式相比,只是對數(shù)據(jù)表進行封裝,而不是封裝每一個記錄行。與PHP強大的關(guān)聯(lián)數(shù)組相結(jié)合,表數(shù)據(jù)入口模式能夠高效、靈活地操作大量的數(shù)據(jù)。由于表數(shù)據(jù)入口模式不需要對記錄進行封裝,所以說表數(shù)據(jù)入口操作的是純數(shù)據(jù)的,而非封裝了數(shù)據(jù)的對象。表數(shù)據(jù)入口模式可直接對數(shù)據(jù)庫進行操作,這使得表數(shù)據(jù)入口模式具有非常高的數(shù)據(jù)操作效率。表數(shù)據(jù)入口模式在數(shù)據(jù)表層面上封裝數(shù)據(jù)操作更加簡單實用,適合用在輕量級的PHP框架中;由于復(fù)雜性降低,表數(shù)據(jù)入口模式也可以大大降低用戶的學(xué)習(xí)成本;表數(shù)據(jù)入口模型不封裝記錄,因此可以直接操作數(shù)據(jù)庫,且表數(shù)據(jù)入口模式中的數(shù)據(jù)以數(shù)組的形式保存,利用PHP關(guān)聯(lián)數(shù)組的優(yōu)勢,執(zhí)行效率比活動記錄模式高得多。
結(jié)語
隨著計算機技術(shù)和PHP技術(shù)水平的發(fā)展,PHP技術(shù)已經(jīng)能夠非常好的適應(yīng)Web系統(tǒng),但是PHP技術(shù)在使用過程中仍然需要進一步優(yōu)化,不斷創(chuàng)新,為Web系統(tǒng)的優(yōu)化提出更優(yōu)的方案。如果PHP技術(shù)止步不前或者不能夠迅速發(fā)展,很有可能被其他更好的技術(shù)所替代,也不能很好的服務(wù)于Web系統(tǒng)。目前,采用被動MVC技術(shù)基本能夠較好地解決Web系統(tǒng)效率低的問題,采用表數(shù)據(jù)入口模式能夠很好地解決訪問層的問題。通過對PHP技術(shù)的不斷研發(fā),可以為Web系統(tǒng)提供更加順暢的腳本服務(wù)。
參考文獻
[1]任中方.MVC模式研究的綜述[J].計算機應(yīng)用研究,2004(10):1-4.
[2]曾楠.基于MVC模式的嵌入式Web設(shè)計方法[J].廈門大學(xué)學(xué)報,2006(2):196-198.
[3]仝戈,張武裝.Smarty在基于MVC框架的Web應(yīng)用程序開發(fā)中的應(yīng)用[J].科技信息,2009(31):839-840.