認(rèn)識(shí)達(dá)內(nèi)從這里開(kāi)始

認(rèn)真做教育 專(zhuān)心促就業(yè)

PHP變成語(yǔ)言:需不需要框架

javascrīpt是基于對(duì)象面向過(guò)程的語(yǔ)言典型。它在設(shè)計(jì)時(shí)甚至沒(méi)有引入Class,今天很多使用者如果一定要用類(lèi),只能以函數(shù)模擬。在JAVA下,一切都要以一個(gè)Class開(kāi)始,在Class里實(shí)現(xiàn);而在JS下,壓根就沒(méi)有類(lèi),可以說(shuō)它是強(qiáng)制面向過(guò)程的?;趯?duì)象(Object-Based)與面向?qū)ο?Object Oriented Programming)是兩個(gè)概念。初學(xué)者不要一看到對(duì)象就說(shuō)這個(gè)語(yǔ)言很OO,或者一看使用對(duì)象不多就認(rèn)為這個(gè)語(yǔ)言不夠現(xiàn)代。

OO就是系統(tǒng)化、模型化,是到目前為止最復(fù)雜和最高級(jí)的手段,對(duì)MVC三者的任意一個(gè)都可以O(shè)O。MVC的目的是分離。分離的目的是減少重復(fù)。找不到重復(fù)是因?yàn)榉蛛x得不到位或不合理。所以如何分離是開(kāi)發(fā)設(shè)計(jì)的核心,也是開(kāi)發(fā)方法的主要內(nèi)容。

應(yīng)該放棄開(kāi)發(fā)速度最重要的觀念。并不是說(shuō)開(kāi)發(fā)速度不重要,而是因?yàn)榭删S護(hù)性(重構(gòu)性)才是真正重要的;可維護(hù)性低的開(kāi)發(fā)方法其開(kāi)發(fā)速度一定高不了。因?yàn)榻Y(jié)構(gòu)化越低開(kāi)發(fā)起來(lái)就越復(fù)雜,反之結(jié)構(gòu)化越高開(kāi)發(fā)就越簡(jiǎn)單。為什么web戰(zhàn)勝software,因?yàn)樗臄?shù)據(jù)存儲(chǔ)、頁(yè)引擎、瀏覽器的這樣一個(gè)架構(gòu)(當(dāng)然可以進(jìn)一步細(xì)分)取代了堆在一起的software,產(chǎn)生了強(qiáng)大的分離效應(yīng)。可以看出,分離是減少重復(fù)提高生產(chǎn)率的要訣。

OO是為了實(shí)現(xiàn)MODEL,MODEL是為了分離。如果問(wèn)題很簡(jiǎn)單就能解決,就不一定要MODEL,否則建模所帶來(lái)的生產(chǎn)成本就大于問(wèn)題本身。應(yīng)該只對(duì)較復(fù)雜的模塊通過(guò)OO建立MODEL。

換言之OO只是手段,分離不一定要OO,甚至不需要MODEL。只要能做到分離。

OOP是無(wú)需質(zhì)疑的一大成就,它是我們解決復(fù)雜的項(xiàng)目的手段。問(wèn)題越復(fù)雜,OO就越重要。但是當(dāng)WEB取代軟件時(shí),本身提供了一種分離架構(gòu),而且分離之后的內(nèi)容又是頁(yè)式的(一次只需要處理一頁(yè))。這也就是為什么web會(huì)戰(zhàn)勝軟件。問(wèn)題復(fù)雜程度降低了,多余的方法成本也應(yīng)該降下來(lái)。去距離不遠(yuǎn)的超市應(yīng)該騎自行車(chē)而不應(yīng)該乘坐出租車(chē),否則等車(chē)的時(shí)間就不能忽略。function能分離開(kāi)就不要用class,class修改維護(hù)起來(lái)比f(wàn)unction復(fù)雜。

請(qǐng)記?。涸谡麄€(gè)計(jì)算機(jī)開(kāi)發(fā)方法學(xué)中,減少重復(fù)是最終目的,分離則是達(dá)到此目的的途徑。這就是效率的本質(zhì)。

應(yīng)該說(shuō)PHP一直處于發(fā)展之中,它是從適合小項(xiàng)目發(fā)展向適合大項(xiàng)目的。對(duì)于php程序中SQL語(yǔ)句的分離,將來(lái)也應(yīng)該像其他數(shù)據(jù)庫(kù)那樣使用存儲(chǔ)過(guò)程。所以,選擇PHP就不要和別的語(yǔ)言比大型。PHP的重要就在于它適合Web開(kāi)發(fā)。

關(guān)于框架,可參見(jiàn)關(guān)于三種主流WEB架構(gòu)的思考,目前的PHP框架如:

Zend Platform

fleaphp

FCS

CakePHP

都是模仿ROR。

Ruby on Rails是面向?qū)ο?OOP)和基于模型-視圖-控制器 (MVC) 的典范。它能起到很高的分離作用。Ruby on Rails震驚了編程界。主要是震驚了JAVA界,他們發(fā)現(xiàn)作為集OOP之大成的圣殿語(yǔ)言面對(duì)ROR的效率難以企及。原因就在于分離是根本,而OO不是。

RAILS的確可能會(huì)有很好的前景。但他只能是IT技術(shù)進(jìn)一步普及和低端化的產(chǎn)物。任何一種行業(yè)都會(huì)由稀缺到普及,由高端到低端。由于ROR為效率而屏蔽了底層,所以ROR只能做個(gè)低端的角色。如果你開(kāi)發(fā)一個(gè)站點(diǎn),規(guī)模逐漸增大,訪問(wèn)量逐漸增高,當(dāng)CMS變成MIS,相對(duì)于使用了Smarty的PHP,rails的優(yōu)勢(shì)只有active record,但是數(shù)據(jù)庫(kù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)操作是性能瓶頸,是最需要設(shè)計(jì)的環(huán)節(jié)。ROR這個(gè)半成品就成了窠臼,項(xiàng)目后期它會(huì)讓你嘗足苦頭。

所以ROR只適合小項(xiàng)目。但是相對(duì)于直接開(kāi)發(fā),框架是有成本的。小項(xiàng)目是否需要這么高的方法成本(學(xué)習(xí)框架,維護(hù)框架)。對(duì)于CMS,ROR出現(xiàn)得晚了些,很多CMS都成了現(xiàn)成的Web服務(wù)了。

Web開(kāi)發(fā)長(zhǎng)期以來(lái)缺乏一種項(xiàng)目規(guī)范。PHP亦如此,每個(gè)人的項(xiàng)目其結(jié)構(gòu)都不一樣。這與JAVA區(qū)別明顯。Rails框架解決了這個(gè)問(wèn)題??傊S著硬件的不斷發(fā)展,性能和穩(wěn)定性等對(duì)于小型網(wǎng)站越來(lái)越不成瓶頸問(wèn)題,所以ROR會(huì)越來(lái)越多,但這是個(gè)緩慢過(guò)程,其對(duì)應(yīng)的網(wǎng)站也會(huì)越來(lái)越低端。

【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!

相關(guān)推薦
最新資訊
免費(fèi)試聽(tīng)課程
  • 全部課程
  • IT課程
  • 設(shè)計(jì)課程
  • 運(yùn)營(yíng)課程
Free courses
最新開(kāi)班時(shí)間
  • 北京
  • 上海
  • 廣州
  • 深圳
  • 南京
  • 成都
  • 武漢
  • 西安
  • 青島
  • 天津
  • 杭州
  • 重慶
  • 哈爾濱
  • 濟(jì)南
  • 沈陽(yáng)
  • 合肥
  • 鄭州
  • 長(zhǎng)春
  • 蘇州
  • 長(zhǎng)沙
  • 昆明
  • 太原
  • 無(wú)錫
  • 石家莊
  • 南寧
  • 佛山
  • 珠海
  • 寧波
  • 保定
  • 呼和浩特
  • 洛陽(yáng)
  • 煙臺(tái)
  • 運(yùn)城
  • 濰坊
  • 開(kāi)課名稱(chēng)
  • 開(kāi)班時(shí)間
  • 搶座
  • 咨詢(xún)
  • 開(kāi)課名稱(chēng)
  • 開(kāi)班時(shí)間
  • 搶座
  • 咨詢(xún)
預(yù)約申請(qǐng)?jiān)嚶?tīng)課
收起