php的特色是簡(jiǎn)單,快速,適用。在PHP的世界里,一切以解決問題為主,所以很多設(shè)計(jì)方面的東西往往被忽視或排斥。雖然PHP的面向?qū)ο筇岢龊芏嗄炅?,但一直被排斥,很多人提介原生態(tài)開發(fā)方式,甚至有人提介徹底面向過程。伴隨著對(duì)OO的質(zhì)疑,PHP框架一方面如雨后春筍遍地開花,另一方面一直受到抵制和質(zhì)疑。
有一點(diǎn)是肯定的,PHP不是一門很好的面向?qū)ο蟮恼Z(yǔ)言,因?yàn)槠錈o法做到完全面向?qū)ο?,也無法優(yōu)雅的實(shí)現(xiàn)面向?qū)ο?。所以現(xiàn)在比較流行的還是以類為主的開放方式,即拋棄或精簡(jiǎn)經(jīng)典的MVC理論,很少用和幾呼不用的設(shè)計(jì)模式,以類加代碼模塊的方式進(jìn)行代碼組織。這種開發(fā)方式在PHP的開源項(xiàng)目里是最流行的,也是最適合二次開發(fā)的,而比較純的面向?qū)ο蟮漠a(chǎn)品有Zen Framework。這類產(chǎn)品入門的門檻比較高,代碼看似“雍腫”,開發(fā)成本比較高,這類產(chǎn)品一勝敗比較少見,市場(chǎng)占有率也比較低。
所有產(chǎn)呂最終都是為市場(chǎng)服務(wù),PHP面向的是WEB開發(fā)市場(chǎng),所以并不需要高端的,復(fù)雜設(shè)計(jì)和開發(fā)技巧,但是前面講的并不是沒有用。
一些基本理論在任何一門語(yǔ)言里都有共性。語(yǔ)法和函數(shù)庫(kù)只是學(xué)好一門語(yǔ)言的必要條件,而不是次要條件。語(yǔ)法和函數(shù)只是表層的東西。只要掌握面向?qū)ο蟮乃枷?,即使沒有一點(diǎn)JAVE和。NET基礎(chǔ),也能看懂用它們寫成的代碼
PHP只是一個(gè)腳本語(yǔ)言,一門工具而已。在WEB開發(fā)中,PHP語(yǔ)言自身所占的分量越來越低,但卻涉及程序設(shè)計(jì)的方方面面,而面向?qū)ο笾皇瞧渲兄唬彩亲钪饕囊粋€(gè)方面。PHP是一種經(jīng)典思想,能實(shí)現(xiàn)低耦合,易擴(kuò)展的代碼,其可用最經(jīng)濟(jì)的方式干一事件
理論是重要的,但是理論也不是一成不變的,比如我們提到的一些設(shè)計(jì)模式,也沒有必要完全遵守,可以做一個(gè)精簡(jiǎn)和變形
基于以上思考, 我們認(rèn)為在PHP的開發(fā)中應(yīng)該靈活使用面向?qū)ο蟮奶匦院驮O(shè)計(jì)原則。
對(duì)于流程明確,需求清晰,需求變更風(fēng)險(xiǎn)小的業(yè)務(wù)邏輯,過程化開發(fā)最適合,這就像解一道 數(shù)學(xué)題,總需要一步步去解,上一步的結(jié)果作為下一步的條件,這個(gè)時(shí)候面向過程的開發(fā)更符合人的思維。
但是對(duì)于流程復(fù)炸,需求不完善,存在很大需求變更風(fēng)險(xiǎn)的業(yè)務(wù)邏輯,此時(shí)用過程化開發(fā)將使程序變的非常的繁瑣,實(shí)現(xiàn)難度很大,并且后期的維護(hù)代價(jià)高得驚人。此時(shí)抽象思維將是最適合的,用面向?qū)ο蟮乃季S去抽象業(yè)務(wù)模型并隨需求不斷精化,最終交付使用,其擴(kuò)展度和可維護(hù)性都要比過程化方法更好
有一點(diǎn)是肯定的,PHP不是一門很好的面向?qū)ο蟮恼Z(yǔ)言,因?yàn)槠錈o法做到完全面向?qū)ο?,也無法優(yōu)雅的實(shí)現(xiàn)面向?qū)ο?。所以現(xiàn)在比較流行的還是以類為主的開放方式,即拋棄或精簡(jiǎn)經(jīng)典的MVC理論,很少用和幾呼不用的設(shè)計(jì)模式,以類加代碼模塊的方式進(jìn)行代碼組織。這種開發(fā)方式在PHP的開源項(xiàng)目里是最流行的,也是最適合二次開發(fā)的,而比較純的面向?qū)ο蟮漠a(chǎn)品有Zen Framework。這類產(chǎn)品入門的門檻比較高,代碼看似“雍腫”,開發(fā)成本比較高,這類產(chǎn)品一勝敗比較少見,市場(chǎng)占有率也比較低。
所有產(chǎn)呂最終都是為市場(chǎng)服務(wù),PHP面向的是WEB開發(fā)市場(chǎng),所以并不需要高端的,復(fù)雜設(shè)計(jì)和開發(fā)技巧,但是前面講的并不是沒有用。
一些基本理論在任何一門語(yǔ)言里都有共性。語(yǔ)法和函數(shù)庫(kù)只是學(xué)好一門語(yǔ)言的必要條件,而不是次要條件。語(yǔ)法和函數(shù)只是表層的東西。只要掌握面向?qū)ο蟮乃枷?,即使沒有一點(diǎn)JAVE和。NET基礎(chǔ),也能看懂用它們寫成的代碼
PHP只是一個(gè)腳本語(yǔ)言,一門工具而已。在WEB開發(fā)中,PHP語(yǔ)言自身所占的分量越來越低,但卻涉及程序設(shè)計(jì)的方方面面,而面向?qū)ο笾皇瞧渲兄唬彩亲钪饕囊粋€(gè)方面。PHP是一種經(jīng)典思想,能實(shí)現(xiàn)低耦合,易擴(kuò)展的代碼,其可用最經(jīng)濟(jì)的方式干一事件
理論是重要的,但是理論也不是一成不變的,比如我們提到的一些設(shè)計(jì)模式,也沒有必要完全遵守,可以做一個(gè)精簡(jiǎn)和變形
基于以上思考, 我們認(rèn)為在PHP的開發(fā)中應(yīng)該靈活使用面向?qū)ο蟮奶匦院驮O(shè)計(jì)原則。
對(duì)于流程明確,需求清晰,需求變更風(fēng)險(xiǎn)小的業(yè)務(wù)邏輯,過程化開發(fā)最適合,這就像解一道 數(shù)學(xué)題,總需要一步步去解,上一步的結(jié)果作為下一步的條件,這個(gè)時(shí)候面向過程的開發(fā)更符合人的思維。
但是對(duì)于流程復(fù)炸,需求不完善,存在很大需求變更風(fēng)險(xiǎn)的業(yè)務(wù)邏輯,此時(shí)用過程化開發(fā)將使程序變的非常的繁瑣,實(shí)現(xiàn)難度很大,并且后期的維護(hù)代價(jià)高得驚人。此時(shí)抽象思維將是最適合的,用面向?qū)ο蟮乃季S去抽象業(yè)務(wù)模型并隨需求不斷精化,最終交付使用,其擴(kuò)展度和可維護(hù)性都要比過程化方法更好