php常用設(shè)計(jì)模式和應(yīng)用場(chǎng)景 PHP網(wǎng)站開發(fā)如何選擇開發(fā)方式?
PHP網(wǎng)站開發(fā)如何選擇開發(fā)方式?我認(rèn)為您提到的開發(fā)模式應(yīng)該是指我們經(jīng)常談?wù)摰能浖_發(fā)模式。我想告訴您這些模式是否適用于PHP。答案是肯定的,它們是適用的。讓我們來談?wù)勥@些常見的開發(fā)方法。瀑布模式:從上
PHP網(wǎng)站開發(fā)如何選擇開發(fā)方式?
我認(rèn)為您提到的開發(fā)模式應(yīng)該是指我們經(jīng)常談?wù)摰能浖_發(fā)模式。我想告訴您這些模式是否適用于PHP。答案是肯定的,它們是適用的。
讓我們來談?wù)勥@些常見的開發(fā)方法。
瀑布模式:
從上而下嚴(yán)格執(zhí)行,從需求分析、軟件設(shè)計(jì)、軟件編碼、軟件測(cè)試、維護(hù)等。優(yōu)點(diǎn)是每一步都很清楚,但是結(jié)果很慢
迭代模式:
是版本模式。首先開發(fā)一個(gè)基本框架,然后為每個(gè)版本添加新的和完善的功能更新。優(yōu)點(diǎn)是快速看到結(jié)果,迅速占領(lǐng)市場(chǎng),缺點(diǎn)是給人的感覺是產(chǎn)品粗糙,缺乏完美的邏輯
增量模型:
非常類似于迭代模型。這是由模塊開發(fā)的。比如我先開發(fā)一個(gè)個(gè)人系統(tǒng)功能,只需要登錄、注冊(cè)和修改個(gè)人信息,然后再開發(fā)一個(gè)產(chǎn)品系統(tǒng)。優(yōu)點(diǎn)是客戶在使用產(chǎn)品時(shí)能立即看到產(chǎn)品,使產(chǎn)品更方便,缺點(diǎn)是缺乏對(duì)產(chǎn)品的宏觀控制
敏捷開發(fā):
這種模式以人為本,將大項(xiàng)目分解成幾個(gè)小項(xiàng)目。每個(gè)項(xiàng)目都是瀑布模型,因?yàn)閯澐趾头纸馐且匀藶楸镜?,所以比較靈活
除此之外,我們經(jīng)常看到招聘的時(shí)候,需要TDD開發(fā)和DDD開發(fā),那么它們是什么
t DD:
測(cè)試驅(qū)動(dòng)開發(fā)就是先寫測(cè)試用例,然后開發(fā)業(yè)務(wù)邏輯。在開發(fā)接口時(shí),我們基本上采用這種模式。首先,我們讓接口返回固定數(shù)據(jù),然后為業(yè)務(wù)邏輯返回特定數(shù)據(jù)。因?yàn)槊恳徊蕉冀?jīng)過測(cè)試,所以代碼更可靠。每次我們添加新的邏輯,只需要運(yùn)行一次測(cè)試用例,然后我們就可以擺脫它,它基本上可以保證軟件中沒有大的bug
DDD:
域驅(qū)動(dòng)開發(fā)。它更關(guān)注業(yè)務(wù)邏輯。它是基于測(cè)試驅(qū)動(dòng)開發(fā)的,但是它強(qiáng)調(diào)整體服務(wù),比如提供個(gè)人中心服務(wù),這是一種滿足業(yè)務(wù)邏輯需要的服務(wù),可以很容易地提供給其他模塊
學(xué)習(xí)本身就是一個(gè)循序漸進(jìn)的過程,PHP很容易入門,但掌握需要一步一步來。
1. 從一個(gè)簡(jiǎn)單的框架開始,比如ThinkPHP,從CMS開始,推薦thinkcmf。它們都是中國(guó)人的作品,材料不需要翻譯。
2. HTML、CSS和JavaScript都需要涉獵。JQuery,一個(gè)早期的框架,今天仍然很有用,而且尖端技術(shù)仍然需要掌握angular、js和Vue。也有相似之處余燼.js、主干等,前端框架最凌亂。ES6和ES7的語(yǔ)法仍在改進(jìn)中。不要貪心,一步一步地去了解它。
3. 終極框架推薦國(guó)外最流行的laravel。它模仿ruby的設(shè)計(jì)理念,與Java類似。它將設(shè)計(jì)模式發(fā)揮到了極致。因此,掌握這個(gè)框架主要集中在控制反轉(zhuǎn)(IOC)、依賴注入(DI)上,這實(shí)際上是工廠模式和接口(laravel中的契約)。實(shí)現(xiàn)技術(shù)使用PHP的魔術(shù)方法(比如靜態(tài)調(diào)用)和反射機(jī)制來實(shí)現(xiàn)優(yōu)雅,被稱為Web藝術(shù)家的框架。
4. Mysql,mongodb慢查詢優(yōu)化,緩存設(shè)計(jì),子數(shù)據(jù)庫(kù),子表,分片設(shè)計(jì),SQL優(yōu)化。大約是半分貝。
5. 異步消息隊(duì)列的使用,如Beanstalk或rabbitmq。Redis使用Memcache,結(jié)合特定的業(yè)務(wù)場(chǎng)景,具有處理高并發(fā)架構(gòu)的能力。
6. Lamp/LNMP部署,包括應(yīng)用集群、數(shù)據(jù)庫(kù)集群、MQ和redis緩存集群部署。大約是Devops的一半。
技術(shù)的最終目標(biāo)是成為一名優(yōu)秀的架構(gòu)師。它是綜合能力的培養(yǎng),是新知識(shí)的學(xué)習(xí)能力,是解決商業(yè)問題的能力。我不認(rèn)為許信辰已經(jīng)掌握了以上這么多。他在底層、PHP內(nèi)核、C擴(kuò)展等方面比較精通,但他非常成功。也有spool和workman的作者,但是在社區(qū)中建立這種威望也是必要的,這需要付出很多代價(jià)。如果你想成為一名技術(shù)大師,這個(gè)過程是必不可少的。
手機(jī)打字不容易。我也是一個(gè)php程序員和標(biāo)題作家。我會(huì)定期在專欄里發(fā)一些技術(shù)文章。歡迎你關(guān)注我。我們也歡迎更正上述評(píng)論。