php開(kāi)發(fā)中采用框架有什么樣的好處
我們?cè)趐hp開(kāi)發(fā)中經(jīng)常聽(tīng)到采用php開(kāi)源框架,那么采用開(kāi)源框架有什么好處呢? 我們?cè)诹私忾_(kāi)源框架之前首先來(lái)了解什么是框架。
框架是一個(gè)應(yīng)用程序的半成品。框架提供了可在應(yīng)用程序之間共享的可覆用的公共結(jié)構(gòu)。開(kāi)發(fā)者把框架融入他們自己的應(yīng)用程序,并加以擴(kuò)展,以滿(mǎn)足他們特定的需要?蚣芎凸ぞ甙牟煌幵谟,框架提供了一致的結(jié)構(gòu),而不僅僅是一組工具類(lèi)。
框架其實(shí)就是一組組件,供你選用完成你自己的系統(tǒng)。簡(jiǎn)單說(shuō)就是使用別人搭好的舞臺(tái),你來(lái)做表演。而且,框架一般是成熟的,不斷升級(jí)的軟件。
可以說(shuō),一個(gè)框架是一個(gè)可復(fù)用的設(shè)計(jì)構(gòu)件,它規(guī)定了應(yīng)用的體系結(jié)構(gòu),闡明了整個(gè)設(shè)計(jì)、協(xié)作構(gòu)件之間的依賴(lài)關(guān)系、責(zé)任分配和控制流程,表現(xiàn)為一組抽象類(lèi)以及其實(shí)例之間協(xié)作的方法,它為構(gòu)件復(fù)用提供了上下文(Context)關(guān)系。因此構(gòu)件庫(kù)的大規(guī)模重用也需要框架。
因?yàn)檐浖到y(tǒng)發(fā)展到今天已經(jīng)很復(fù)雜了,特別是服務(wù)器端軟件,設(shè)計(jì)到的知識(shí),內(nèi)容,問(wèn)題太多。在某些方面使用別人成熟的框架,就相當(dāng)于讓別人幫你完成一些基礎(chǔ)工作,你只需要集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計(jì)。而且框架一般是成熟,穩(wěn)健的,他可以處理系統(tǒng)很多細(xì)節(jié)問(wèn)題,比如,事物處理,安全性,數(shù)據(jù)流控制等問(wèn)題。還有框架一般都經(jīng)過(guò)很多人使用,所以結(jié)構(gòu)很好,所以擴(kuò)展性也很好,而且它是不斷升級(jí)的,你可以直接享受別人升級(jí)代碼帶來(lái)的好處。框架一般處在低層應(yīng)用平臺(tái)和高層業(yè)務(wù)邏輯之間的中間層。衡量應(yīng)用系統(tǒng)設(shè)計(jì)開(kāi)發(fā)水平高低的標(biāo)準(zhǔn)就是:解耦性;你的應(yīng)用系統(tǒng)各個(gè)功能是否能夠徹底脫離?是否不相互依賴(lài),也只有這樣,才能體現(xiàn)可維護(hù)性、可拓展性的軟件設(shè)計(jì)目標(biāo)。
總的來(lái)說(shuō),框架就是一個(gè)可以被廣泛應(yīng)用的架構(gòu)(如MVC),通常是大家常用而又沒(méi)什么變化的東西,人們就把它框架,讓大家節(jié)省時(shí)間。比如ThinkPHP就 是為了簡(jiǎn)化企業(yè)級(jí)應(yīng)用開(kāi)發(fā)和敏捷WEB應(yīng)用開(kāi)發(fā)而誕生的。最早誕生于2006年初,原名FCS,2007年元旦正式更名為T(mén)hinkPHP,并且遵循Apache2開(kāi)源協(xié)議發(fā)布。早期的思想架構(gòu)來(lái)源于Struts,后來(lái)經(jīng)過(guò)不斷改進(jìn)和完善,同時(shí)也借鑒了國(guó)外很多優(yōu)秀的框架和模式,使用面向?qū)ο蟮拈_(kāi)發(fā)結(jié)構(gòu)和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(標(biāo)簽庫(kù))、RoR的ORM映射和ActiveRecord模式,封裝了CURD和一些常用操作,單一入口模式等,在模版引擎、緩存機(jī)制、認(rèn)證機(jī)制和擴(kuò)展性方面均有獨(dú)特的表現(xiàn).
我們已經(jīng)了解了什么是框架那么我們接下來(lái)看看它有什么好處。
第一:
mvc模式
PHP工作起來(lái)本身就像是一個(gè)模板引擎。但是,如果你很不負(fù)責(zé)任的使用它,這樣將會(huì)使你的代碼很丑陋,將會(huì)使代碼難以維護(hù)。
Mvc模式:
模型:通常代表著你的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)的接口;
視圖:包含了頁(yè)面模板和輸出;
控制器:處理頁(yè)面的請(qǐng)求。
這種分離是代碼更整潔,更容易維護(hù)。
第二:
安全
在PHP中,可能你已經(jīng)想過(guò)很多辦法對(duì)輸入和輸出進(jìn)行過(guò)濾了,以防止您的網(wǎng)站被攻擊。手動(dòng)的處理這些過(guò)濾將會(huì)很累,當(dāng)你使用了框架以后,你就可以忘掉那些累了。
對(duì)于一個(gè)框架,大部分過(guò)濾工作可以幫您自動(dòng)完成。例如codeigniter框架:
通過(guò)數(shù)據(jù)庫(kù)的任何值將會(huì)被過(guò)濾這樣防止sql注入性攻擊。
所有html可以自動(dòng)生成,如表單輔助函數(shù)和url輔助函數(shù)可以對(duì)輸出自動(dòng)過(guò)濾所有用戶(hù)輸入的數(shù)據(jù)都可以進(jìn)行過(guò)濾防止xss攻擊。
想要加密cookie只需要改變一個(gè)配置選項(xiàng)就可以了。
第三:
使用少的代碼,提高開(kāi)發(fā)速度
所有的PHP框架都會(huì)有一個(gè)學(xué)習(xí)曲線,但是一點(diǎn)你越過(guò)了谷峰,你就會(huì)享受快速開(kāi)發(fā)帶來(lái)的樂(lè)趣了。
使用框架意味著你寫(xiě)更少的代碼,這就意味著更少的時(shí)間花在打字上面。你不必為每個(gè)項(xiàng)目去查找第三方的類(lèi)庫(kù),因?yàn)榭蚣芤呀?jīng)幫你提供了很多類(lèi)庫(kù)了。
此外,因?yàn)槟愕拇a已經(jīng)以一種方式默認(rèn)的組織起來(lái)了,這樣你就能更快的發(fā)現(xiàn)錯(cuò)誤和維護(hù)代碼,對(duì)你現(xiàn)在的代碼進(jìn)行更改。
第四:
公共代碼和類(lèi)庫(kù)
PHP是一門(mén)偉大的web開(kāi)發(fā)語(yǔ)言,它提供了無(wú)數(shù)的工具和類(lèi)庫(kù)。但是當(dāng)你試圖單獨(dú)建立一個(gè)網(wǎng)站的時(shí)候,你要么自己寫(xiě)代碼,要么使用第三方的代碼。
所有優(yōu)秀的php框架都會(huì)提供一些類(lèi)庫(kù)和輔助函數(shù)給你,它們能給你提供以下幫助:表單驗(yàn)證、輸入輸出的數(shù)據(jù)過(guò)濾、數(shù)據(jù)庫(kù)抽象、Session和cookie處理、Email、日歷和分頁(yè)等,這樣的例子不勝枚舉。更何況,還有一些社區(qū)提供的大量的插件,你可以將它添加到你的框架中。
使用php框架的好處有很多,有可能使用php框架不是你最佳的選擇,但是從當(dāng)前網(wǎng)絡(luò)新技術(shù)的發(fā)展角度來(lái)看,php框架還是值得探討的。