《如何選擇PHP項(xiàng)目的開(kāi)發(fā)方案?》要點(diǎn):
本文介紹了如何選擇PHP項(xiàng)目的開(kāi)發(fā)方案?,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
《如何選擇PHP項(xiàng)目的開(kāi)發(fā)方案?》是否對(duì)您有啟發(fā),歡迎查看更多與《如何選擇PHP項(xiàng)目的開(kāi)發(fā)方案?》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
這里不是談?wù)摰降子貌挥肞HP去開(kāi)發(fā)的問(wèn)題,而是當(dāng)你遇到一個(gè)項(xiàng)目,已經(jīng)決定了用PHP,然后才來(lái)看的問(wèn)題:用PHP的什么開(kāi)發(fā)方案.
基本上有這么幾種方案.各有各的說(shuō)法,良莠不齊,我就談?wù)勎覍?duì)它們利弊的認(rèn)識(shí),選擇的時(shí)候也多個(gè)參考.
方案1:基于開(kāi)源系統(tǒng)
常用的開(kāi)源系統(tǒng)有:Discuz,PHPWind,PHPMyWind,PHPCMS,DedeCMS,Ecshop系列等.
這種方式是最偷懶的,也是初學(xué)者的首選.因?yàn)橐粋€(gè)初學(xué)者或者不學(xué)技術(shù)的人也能在分分鐘之內(nèi)依葫蘆畫(huà)瓢的搭建出一個(gè)系統(tǒng).
但有技術(shù)和沒(méi)有技術(shù)的區(qū)別在于后續(xù)能不能按需去修改,去擴(kuò)展功能,去寫(xiě)插件,去深度二次開(kāi)發(fā)......
很多人總認(rèn)為這種方案是最容易的,但隨著項(xiàng)目的不斷出現(xiàn)的新需求,這樣的方式就裸露出了很大的局限在后面.
好比你用Discuz做了一個(gè)論壇,當(dāng)你想添加一個(gè)系統(tǒng)中并沒(méi)有事先開(kāi)發(fā)的功能時(shí)就麻煩了,你很有可能需要開(kāi)發(fā)插件,或者深度二次開(kāi)發(fā).這就不是初學(xué)水平能勝任的,而是要高級(jí)水平才能自由的修改它,否則會(huì)遇到很多莫名其妙的情況.
因?yàn)樗筒恢皇切枰砑有履0?甚至需要添加控制器和數(shù)據(jù)庫(kù)的底層操作,需要傷筋動(dòng)骨了.通常麻煩會(huì)大到你想撞墻以至于不想干的地步,如果你基礎(chǔ)不夠,此時(shí)你必定會(huì)陷入困擾之中.
所以,網(wǎng)上有很多這種方案開(kāi)發(fā)的項(xiàng)目,后續(xù)的升級(jí)都變得很是困擾,甚至多年都不敢升級(jí).
但不能因此就說(shuō)這些系統(tǒng)沒(méi)有意義,至少它給你“入門(mén)”了.否則一個(gè)新手就連搭建個(gè)系統(tǒng)都成問(wèn)題,也會(huì)大大的影響學(xué)習(xí)的積極性和自信心.
方案2:基于某框架
這需要一定的PHP功底了.這種層次需要你本身開(kāi)發(fā)控制器,Model,View層,需要本身設(shè)計(jì)數(shù)據(jù)庫(kù),需要懂面向?qū)ο缶幊趟枷?所以說(shuō)需要一定的基礎(chǔ).
框架有:TP框架,Laravel框架,YII框架,CI框架等等.也是各有各的特點(diǎn).沒(méi)有最好的,只有更好的.
不要迷信某種框架!
如果你能使用這種方式來(lái)開(kāi)發(fā)出項(xiàng)目,說(shuō)明你有PHP基礎(chǔ),甚至有點(diǎn)水平了.同時(shí)比如控制器是你本身開(kāi)發(fā)的,你就可以很方便的去修改某個(gè)功能和添加某個(gè)功能.
好比給用戶(hù)添加一個(gè)留言的模塊,一個(gè)微信支付的模塊,一個(gè)在線(xiàn)視頻的模塊,就變得很容易.
這種方式的缺陷就是:一開(kāi)始開(kāi)發(fā)出一個(gè)系統(tǒng)就比擬麻煩.基礎(chǔ)不到位,你可能寸步難行,開(kāi)發(fā)好久,系統(tǒng)都不能正常運(yùn)營(yíng)起來(lái).
同時(shí)如果某個(gè)框架底層實(shí)現(xiàn)有問(wèn)題或者太啰嗦,你不好修改.只有比及作者下一次的升級(jí),或者你更換其他的框架.
所以選擇這種方案需要必定的冒險(xiǎn),需要有實(shí)力去支撐.
方案3:直接開(kāi)發(fā)項(xiàng)目,但都是用基礎(chǔ)知識(shí).
好比全是用PHP的函數(shù)去堆疊,一通的include,也沒(méi)有模板解析引擎,也不做單入口,也沒(méi)采用MVC,也不使用面向?qū)ο?
這種項(xiàng)目雖然最后開(kāi)發(fā)出來(lái)了(而且很有可能開(kāi)發(fā)的出來(lái),因?yàn)楸闶谴罘e木的方式堆出來(lái)的),但維護(hù)起來(lái)麻煩,同時(shí)也沒(méi)移植性可言.
每次開(kāi)發(fā)一個(gè)新的項(xiàng)目都一樣的工作量,每次也都像脫一層皮.
速度和效率都慢,不值得提倡.
方案4:直接開(kāi)發(fā)項(xiàng)目,同時(shí)使用了更高級(jí)的知識(shí)如MVC的措施,面向?qū)ο笏枷?
這種方式雖然開(kāi)發(fā)出的項(xiàng)目,同時(shí)維護(hù)起來(lái)比上述基礎(chǔ)開(kāi)發(fā)要容易.但是同樣沒(méi)有移植性可言.也不值得提倡.
方案5:自定義框架,在自定義框架上開(kāi)發(fā)具體項(xiàng)目.
本身先用面向?qū)ο蟆VC、單入口等開(kāi)發(fā)個(gè)自定義的框架,然后在本身的框架之上開(kāi)發(fā)具體項(xiàng)目.
這樣的方式很好,好的地方便是你的底層可以自由的修改,不用等別人來(lái)升級(jí)什么的.
但是難度比擬大.不適合一般的新手.
方案6:自定義框架,在自定義框架上開(kāi)發(fā)通用系統(tǒng),在通用系統(tǒng)上開(kāi)發(fā)項(xiàng)目.
這樣的方式很好,好的地方便是不但你的底層可以自由的修改,同時(shí)你的通用項(xiàng)目功能也可以隨時(shí)升級(jí).
但是難度是最大的,要求你對(duì)整個(gè)PHP體系有深刻的了解,同時(shí)開(kāi)發(fā)過(guò)很多的項(xiàng)目,懂得要怎么才能優(yōu)化系統(tǒng),才能開(kāi)發(fā)出實(shí)用的自定義框架和自適應(yīng)通用系統(tǒng).
這種方式不但具有方便的維護(hù)性,同時(shí)具有很好的可移植性.同時(shí)你可以根據(jù)必要隨時(shí)升級(jí)底層和通用系統(tǒng)層,讓它為你的所有項(xiàng)目做最好的服務(wù).
值得提倡,但你如果不先脫幾層皮,你是做不到的這種方案的.
開(kāi)發(fā)的項(xiàng)目注意事項(xiàng):
1:項(xiàng)目升級(jí)不要隨意跟風(fēng),也不要?jiǎng)硬粍?dòng)就升級(jí),除非有硬性需求;
一些基礎(chǔ)不夠的人,自然沒(méi)有全面的認(rèn)識(shí).看到有新的語(yǔ)法了,就想馬上去用.總感覺(jué)既然有新的了,那就要用新的,這才合理,而不顧他本身的項(xiàng)目的情況,升級(jí)麻煩與否,技術(shù)力量跟得上與否,開(kāi)發(fā)時(shí)間大概要多少.
建議這些人本身去做一下再說(shuō).因?yàn)楹芏嗉夹g(shù)負(fù)責(zé)人是那種只會(huì)說(shuō)而不會(huì)寫(xiě)的技術(shù)部管家...盲目的瞎指揮會(huì)讓你的技術(shù)團(tuán)隊(duì)飽受摧殘,很多的時(shí)候都費(fèi)力不討好.
2:不要亂更換開(kāi)發(fā)方案,除非你能把控的了;
比如:本日用Discuz開(kāi)發(fā)了,但是發(fā)現(xiàn)一個(gè)能開(kāi)發(fā)不了了,明天就換用PHPCMS,遇到了問(wèn)題又更換為T(mén)P開(kāi)發(fā),再更換為L(zhǎng)aravel去開(kāi)發(fā).至于為什么要更換那種新的開(kāi)發(fā)方案,也說(shuō)不出個(gè)所以然,只是看網(wǎng)上別人說(shuō)好就去改......古代劍道高手,基本上都是手中無(wú)劍,哪怕用的是一根棍子也能打敗那種手持寶島的不學(xué)無(wú)術(shù)之徒.所以,自己用的好,才是真的好.更換一個(gè)新的方案,除非你能把控的了.
3:在開(kāi)發(fā)之前,選擇好開(kāi)發(fā)方案尤為重要.否則很可能走不下去,或者從頭再來(lái).浪費(fèi)在不絕的選擇上......
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10651.html