[轉載]PHP 開發中的三個世界

PHP 開發中的三個世界

轉載至phpchina

現在在PHP的框架上面討論很多,我覺得這裏面主要有兩個問題:首先盲目崇拜框架,認爲採用框架設計纔是正統,否則就是不入流、是菜鳥。其次是模仿 Java 的痕跡很重。我並不是說模仿是一件壞事,這裏指的是沒有經過認真思索,未曾考慮框架或某些設計的原理與目的、承接項目實際情況和 Java 與 PHP 之間的異同而盲目進行的一些“模仿”工作。《PHP 開發中的三個世界》一文就是針對其中“項目的實際情況”來寫的一篇文章,着重討論了在不同開發領域進行 PHP 開發的一些特點。若有不當之處,還請方家指正。


PHP 開發中的三個世界

在 PHP 開發領域,不斷在討論討論 OO ,討論框架、討論設計模式、討論 MVC 模型,討論這些所帶來的種種好處。我不對這些好處進行否認,我只是認爲不能盲目跟隨某種開發方式,一切方法都是有適用範圍的, PHP 開發也不例外。PHP 開發根據受衆、服務目標等可以大致可以分爲三種不同的開發領域:行業商業軟件通用共享軟件私有專用軟件。在這些不同的領域,所主要採用的開發手段也是有所區別的。明確自己產品所在領域並確定下來一種開發方法是很有必要的。需要說明的是這個三個分類嚴格說來並不是完全並列,涇渭分明,希望這不會給大家帶來困擾,領會意思即可。:)

另限於個人的水平及觀點的狹隘,有些看法難免有失偏頗甚至偏激,還望方家不吝賜教。


首先來說一下行業商用軟件
這類軟件主要面向特定行業或企業的某種應用,項目設計較爲複雜。一般爲某個開發公司獨立承接,幾乎沒有競爭對手。目前主要以 CRM、CMS、OA 等爲代表。這類軟件的客戶並不關心繫統的運行速度有多快,而是關心這個系統能否協調一致完成所需要的功能。由於是面向特定的客戶,所以該類軟件使用面較爲狹窄,若換了另外一家客戶通常就不能很好的運行(這裏的運行並非指代碼的執行,而是指功能的實現),就必須推倒重來。爲了減少在開發不同系統當中所作無謂的基礎性的重複勞動,我們就必須把這些不同的系統應用中相同的部分給提取出來。這些相同的部分既含有代碼技術上的相似性,也包含設計流程上相似性。這是一種將問題進行抽象的過程。我們現有的這些框架、模型就是前人在這些抽象過程的勞動成果。由於幾乎每個 Java 項目通常都是較爲大型的複雜的應用,所以我們在這些項目中處處可見框架,處處可見模式。你不採用這種開發方式,那就幾乎無法前行。PHP 在開發這類應用時是跟 Java 很相似的,唯一不同的就是各自運行環境(主要是指各自的語言解釋器,下同)不同。PHP 是一種腳本語言,其支持各種 OO 語言特性的代價很沉重。無論是在空間還是在時間上。所幸對於這類行業商用軟件性能是次要的,並且可以自己決定運行環境,因此採用對 OO 特性支持良好的 PHP5 是必然的選擇。而且採用一些框架也是必須的。

再來說說通用共享軟件
這個概念從傳統桌面型共享軟件的概念而來,它的主要特點就是客戶(包括潛在的客戶)衆多,同一類型的軟件用戶的選擇也較多,競爭較爲激烈。這類軟件目前以論壇社區程序爲代表。爲了贏得客戶,那你必須要做得比一般競爭對手更好。對這類軟件來說,競爭主要在一下幾個方面:

1、界面。界面是你的客戶(包括客戶的客戶)對你產品的第一印象。因此界面必須要友好。界面不單指外觀,還包括可操作性。界面必須要考慮到大多數人的習慣,操作必須要簡單、順手。外觀雖然是蘿蔔白菜,但你也必須留一個選擇權(接口)給客戶,讓客戶能非常方便地修改使用。

2、性能。良好的界面當然會給你的產品加分。但在這可以 Ctrl+C 和 Ctrl+V 的世界,再優秀的界面都會被競爭對手瞬間所“學習”。如果說界面是第一印象,那麼性能將是致命的考察。因爲界面可以更換,但你不能指望客戶自己去完善代碼。在 PHP 開發中,性能很大程度上是指代碼的運行速度,另外一個重要的表現就是對系統資源的損耗程度。每個處理進程的資源佔有率越低,系統就越有時間來同時處理更多的請求。這些都是一個細微之處見真章的功夫。希望有機會再和大家詳細探討。但其中我個人有個大致的原則就是避免使用類。PHP中的類真是性能殺手。避免使用類的直接後果就是避免使用框架。有人說這樣做會影響開發效率。我承認,是可能會造成一些這樣的效果。但我認爲,效率分兩種:開發效率和運行效率。在行業商用軟件中我們這樣做是不合適的,但在通用共享軟件裏面,我們的競爭對手很多。況且客戶纔不會管你使用什麼框架、採用什麼模式,客戶只關心他們自己的體驗。雨和熊掌不可兼得,我們必須要捨棄一點開發效率來保證運行效率。這也是不得已而爲之。

3、兼容性。這裏的兼容性主要是指代碼在不同 PHP 版本之間的兼容性。我們注意到,通常情況下,PHP 版本越新就意味着性能和穩定性就越強。因此我們應儘可能採用新版本所具有函數和語法。但另一方面,由於用戶衆多,我們無法對每一個用戶的運行環境做出假設。並不是每個客戶都擁有獨立的服務器,很多使用通用共享軟件客戶都是採用虛擬主機作爲運行平臺。況且也不是每個虛擬主機提供商都能支持最新版本的 PHP 解釋器。兼容性還有一個副作用就是限制了一些開發手段。毫無疑問,在 PHP4 平臺想得心應手地使用各種OO特性與技巧是很困難的。這就有一個平衡問題。如何處理這種平衡,我想一些關於 PHP 版本運行情況分佈的調查或許可以作爲一個有力的參考。

最後是私有專用軟件
私有專用軟件是指具有一定研發實力的公司根據自身的業務特點而獨立開發的應用系統。專供自己使用,很少作爲產品出售。這類系統複雜性並不亞於企業商用型軟件,但其對性能的要求更高,幾近苛刻。這些系統以 sina 的新聞發佈系統、淘寶的物品買賣管理這些爲代表(雖然所舉的這些並不全都是採用 PHP 開發)。這類系統的特點是通常企業自身也擁有獨立的服務器,可以對服務器自身有針對性的配置和優化。若想對付這些應用,必須從企業業務自身特點出發,並根據實際的服務器情況專門進行對 PHP 模塊進行優化編譯。然後還採用 PHP 擴展甚至是 Zend 擴展來代替腳本中實現一些功能。這就要求 PHP 程序員同時要具備一定的 C 語言知識(雖然理論上其它的語言也可以,但無疑 C 是最安全和方便的)。

 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章