功能組件第二個(gè)就是框架的核心組件,你了解多少?
2021-09-01
背景
問(wèn)題源于我們?cè)谶M(jìn)行框架選擇時(shí)對(duì)業(yè)務(wù)所需的技術(shù)堆棧的分析。我們發(fā)現(xiàn)我們需要的框架只需要包含路由、數(shù)據(jù)庫(kù)和日志就可以滿足需求。經(jīng)過(guò)討論,我們開始了。開始幀選擇。
選擇
在討論框架選擇時(shí),有些人更喜歡使用像 Yii 這樣功能豐富的框架。這些框架提供的功能完全可以滿足業(yè)務(wù)需求。但是,反對(duì)意見是這些框架的學(xué)習(xí)成本比較高,新人會(huì)接手。不容易,性能差,很多功能沒用;而其他人更喜歡使用Slim、Yaf,框架提供了基本的路由,其他功能組件通過(guò)lib加載,這樣就可以按需加載這種功能組件沒有冗余,學(xué)習(xí)成本也比較小。這個(gè)解決方案也有很多反對(duì)意見。每個(gè)組件是否能與框架很好的結(jié)合,每個(gè)庫(kù)都有自己的API風(fēng)格,學(xué)習(xí)成本不小,以及如何保證每個(gè)庫(kù)的穩(wěn)定性。
在這種情況下,就有了構(gòu)建一個(gè)滿足各方需求的框架的想法。團(tuán)隊(duì)希望框架只包含常用的功能組件,比如,,,這些很少用到的功能,盡量不要使用,減少必要的學(xué)習(xí)成本;為了支持一些擁有千萬(wàn)級(jí)PV的業(yè)務(wù),希望框架的性能足夠好;同時(shí)希望框架的可維護(hù)性好。對(duì)于一些特殊場(chǎng)景,該框架可以提供良好的擴(kuò)展性并集成一些功能。進(jìn)入框架。
最后,我們討論并決定自己開發(fā)一個(gè)框架,于是我們開始了整體框架的設(shè)計(jì)。
設(shè)計(jì)框架
首先是底層框架。設(shè)計(jì)底層框架的第一個(gè)問(wèn)題是如何管理框架的所有類及其依賴關(guān)系。與成熟的方案相比php什么是框架,有兩種方案:依賴注入和基于組件的設(shè)計(jì)??紤]到后續(xù)需要對(duì)各個(gè)組件進(jìn)行單元測(cè)試php什么是框架,選擇了依賴注入方案。
功能組件
第二個(gè)是框架的核心組件??蚣馨幕竟δ芙M件包括數(shù)據(jù)庫(kù)、驗(yàn)證、日志等,封裝這些組件有兩種方案。您可以使用外部開源組件或自己實(shí)現(xiàn)它們。庫(kù)API風(fēng)格不一致,庫(kù)文件過(guò)多。決定這些核心組件自己實(shí)現(xiàn)。
易用性
為了完成一件事,很多功能豐富的框架提供了多種方式。開發(fā)功能時(shí),可以同時(shí)使用方法A和方法B。有時(shí)用戶可能會(huì)不知道應(yīng)該使用哪一種;并且隨著業(yè)務(wù)的迭代,在使用上也有各種異同。因此,我們更愿意只提供一種方式來(lái)減少用戶選擇的混亂,同時(shí)提供系統(tǒng)的可維護(hù)性。
擴(kuò)展
該框架包含常用的基本組件。為了支持一些特殊組件的使用,該框架集成并提供了基于組件的擴(kuò)展能力。
總結(jié)
終于,經(jīng)過(guò)三個(gè)多月的開發(fā),框架已經(jīng)開發(fā)完成,已經(jīng)成熟可以在多個(gè)產(chǎn)品中使用;框架的某些部分可能需要不斷優(yōu)化,歡迎大家多提提意見。我們的目標(biāo)是打造一個(gè)國(guó)產(chǎn)的優(yōu)秀PHP框架。
最后直接列出框架和開發(fā)手冊(cè)。 :)
:
中文手冊(cè):
文章來(lái)源:segmentfault,作者:eccozhou。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,歡迎發(fā)送郵件至:sean.li#ucloud.cn(郵箱中#請(qǐng)改為@)進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。
后臺(tái)-系統(tǒng)設(shè)置-擴(kuò)展變量-移動(dòng)廣告位-內(nèi)容正文底部