我說的項目開發方案並不是談論到底用不用PHP去開發的問題,而是當你遇到一個項目,已經決定了用PHP,然后才來看的問題:用PHP的什么開發方案。
基本上有這么幾種方案。各有各的說法,良莠不齊,我就談談我對它們利弊的認識,選擇的時候也多個參考。
方案1:基於開源系統
常用的開源系統有:Discuz,PHPWind,PHPMyWind,PHPCMS,DedeCMS,Ecshop系列等。
這種方式是最偷懶的,也是初學者的首選。因為一個初學者或者不學技術的人也能在分分鍾之內依葫蘆畫瓢的搭建出一個系統。
但有技術和沒有技術的區別在於后續能不能按需去修改,去擴展功能,去寫插件,去深度二次開發......
很多人總認為這種方案是最容易的,但隨着項目的不斷出現的新需求,這樣的方式就暴露出了很大的局限在后面。比如你用Discuz做了一個論壇,當你想添加一個系統中並沒有事先開發的功能時就麻煩了,你很有可能需要開發插件,或者深度二次開發。
這就不是初學水平能勝任的,而是要高級水平才能自由的修改它,否則會遇到很多莫名其妙的情況。因為它就不只是需要添加新模板,甚至需要添加控制器和數據庫的底層操作,需要傷筋動骨了。通常麻煩會大到你想撞牆以至於不想干的地步,如果你基礎不夠,此時你一定會陷入困擾之中。
所以,網上有很多這種方案開發的項目,后續的升級都變得很是困擾,甚至多年都不敢升級。
但不能因此就說這些系統沒有意義,至少它給你“入門”了。否則一個新手就連搭建個系統都成問題,也會大大的影響學習的積極性和自信心。
方案2:基於某框架
這需要一定的PHP功底了。這種層次需要你自己開發控制器,Model,View層,需要自己設計數據庫,需要懂面向對象編程思想。所以說需要一定的基礎。
框架有:TP框架,Laravel框架,YII框架,CI框架等等。也是各有各的特點。沒有最好的,只有更好的。
不要迷信某種框架!
如果你能使用這種方式來開發出項目,說明你有PHP基礎,甚至有點水平了。同時比如控制器是你自己開發的,你就可以很方便的去修改某個功能和添加某個功能。
比如給用戶添加一個留言的模塊,一個微信支付的模塊,一個在線視頻的模塊,就變得很容易。
這種方式的缺陷就是:一開始開發出一個系統就比較麻煩。基礎不到位,你可能寸步難行,開發好久,系統都不能正常運營起來。
同時如果某個框架底層實現有問題或者太啰嗦,你不好修改。只有等到作者下一次的升級,或者你更換其他的框架。
所以選擇這種方案需要一定的冒險,需要有實力去支撐。
方案3:直接開發項目,但都是用基礎知識。
比如全是用PHP的函數去堆疊,一通的include,也沒有模板解析引擎,也不做單入口,也沒采用MVC,也不使用面向對象。
這種項目雖然最后開發出來了(而且很有可能開發的出來,因為就是搭積木的方式堆出來的),但維護起來麻煩,同時也沒移植性可言。
每次開發一個新的項目都一樣的工作量,每次也都像脫一層皮。
速度和效率都慢,不值得提倡。
方案4:直接開發項目,同時使用了更高級的知識如MVC的措施,面向對象思想。
這種方式雖然開發出的項目,同時維護起來比上述基礎開發要容易。但是同樣沒有移植性可言。也不值得提倡。
方案5:自定義框架,在自定義框架上開發具體項目。
自己先用面向對象、MVC、單入口等開發個自定義的框架,然后在自己的框架之上開發具體項目。
這樣的方式很好,好的地方就是你的底層可以自由的修改,不用等別人來升級什么的。
但是難度比較大。不適合一般的新手。
方案6:自定義框架,在自定義框架上開發通用系統,在通用系統上開發項目。
這樣的方式很好,好的地方就是不但你的底層可以自由的修改,同時你的通用項目功能也可以隨時升級。
但是難度是最大的,要求你對整個PHP體系有深刻的了解,同時開發過很多的項目,懂得要怎么才能優化系統,才能開發出實用的自定義框架和自適應通用系統。
這種方式不但具有方便的維護性,同時具有很好的可移植性。同時你可以根據需要隨時升級底層和通用系統層,讓它為你的所有項目做最好的服務。
值得提倡,但你如果不先脫幾層皮,你是做不到的這種方案的。
開發的項目注意事項:
1:項目升級不要隨意跟風,也不要動不動就升級,除非有硬性需求;
一些基礎不夠的人,自然沒有全面的認識。看到有新的語法了,就想馬上去用。總感覺既然有新的了,那就要用新的,這才合理,而不顧他自己的項目的情況,升級麻煩與否,技術力量跟得上與否,開發時間大概要多少。建議這些人自己去做一下再說。
因為很多技術負責人是那種只會說而不會寫的技術部管家...盲目的瞎指揮會讓你的技術團隊飽受摧殘,很多的時候都費力不討好。
2:不要亂更換開發方案,除非你能把控的了;
比如:今天用Discuz開發了,但是發現一個能開發不了了,明天就換用PHPCMS,遇到了問題又更換為TP開發,再更換為Laravel去開發。
至於為什么要更換那種新的開發方案,也說不出個所以然,只是看網上別人說好就去改......古代劍道高手,基本上都是手中無劍,哪怕用的是一根棍子也能打敗那種手持寶島的不學無術之徒。所以,自己用的好,才是真的好。更換一個新的方案,除非你能把控的了。
3:在開發之前,選擇好開發方案尤為重要。否則很可能走不下去,或者從頭再來。浪費在不停的選擇上......