成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

為什么還要寫一個(gè)PHP框架?

wangbinke / 2564人閱讀

摘要:最后討論決定自己開發(fā)一個(gè)框架,于是就開始了整體框架的設(shè)計(jì)。設(shè)計(jì)框架首先是底層框架,設(shè)計(jì)底層框架的第一個(gè)問題就是如何管理框架的所有類及其依賴關(guān)系,對(duì)比成熟的方案有依賴注入和基于組件設(shè)計(jì)兩種方案。

背景

事情源于在做框架選型的時(shí)候,我們對(duì)業(yè)務(wù)需要的技術(shù)棧進(jìn)行了分析,發(fā)現(xiàn)我們需要的框架只需要包含路由、數(shù)據(jù)庫(kù)、Redis、日志,就可以滿足需求了,大家討論后開始著手框架的選擇。

選型

討論框架選型時(shí)部分人意見偏向使用Laravel、Yii這種富功能框架,這些框架提供的功能是完全可以滿足業(yè)務(wù)需求的,然而反對(duì)的意見則是這些框架的學(xué)習(xí)成本比較高,新人接手不容易,而且性能較差,很多特性都用不到;而另一部分人則偏向于使用Slim、Yaf, 框架提供了基本的路由,其他功能組件則通過lib加載進(jìn)來,這樣就可以按需加載各種功能組件,沒有多余的feature,學(xué)習(xí)成本相對(duì)較小,同樣這種方案也有很多反對(duì)意見,各個(gè)組件是否能與框架結(jié)合的很好,每個(gè)lib有各自的API風(fēng)格,學(xué)習(xí)成本也不小,而且如何保障各個(gè)lib的穩(wěn)定性。

在這樣的情況下,就有了構(gòu)件一個(gè)滿足各方需求框架的想法,團(tuán)隊(duì)希望框架只包含了常用的功能組件,像Event、Behavior、Broadcasting、Notification這些很少用到的功能盡量不需要,減少不必要的學(xué)習(xí)成本;為了支持一些業(yè)務(wù)千萬級(jí)的PV,希望框架的性能足夠好;同時(shí)希望框架的可維護(hù)性較好,針對(duì)一些特殊的場(chǎng)景,框架能提供良好的擴(kuò)展能力,將一些功能集成到框架里。

最后討論決定自己開發(fā)一個(gè)框架,于是就開始了整體框架的設(shè)計(jì)。

設(shè)計(jì) 框架

首先是底層框架,設(shè)計(jì)底層框架的第一個(gè)問題就是如何管理框架的所有類及其依賴關(guān)系,對(duì)比成熟的方案有依賴注入和基于組件設(shè)計(jì)兩種方案。由于考慮后續(xù)需要對(duì)各個(gè)組件進(jìn)行單元測(cè)試,選擇了依賴注入的方案。

功能組件

第二個(gè)就是框架的核心組件,框架包含的基本功能組件有數(shù)據(jù)庫(kù)、驗(yàn)證、日志、Session、Cookie、Redis等,封裝這些組件有兩種方案,可以采用外部開源的composer組件,或者自己實(shí)現(xiàn),由于不同composer庫(kù)API風(fēng)格不一致,而且很多庫(kù)require文件太多,決定這些核心組件均自己實(shí)現(xiàn)。

易用性

要完成一件事,很多富功能框架提供了多種方式,在開發(fā)一個(gè)功能時(shí),既可以使用A方法,又可以使用B方法,有時(shí)用戶可能很迷惑,到底應(yīng)該用哪個(gè)呢;而且隨著業(yè)務(wù)迭代,到處是各種異同的使用方式。所以我們偏向于只提供單一的方式,減少用戶選擇的困惑,同時(shí)提供系統(tǒng)的可維護(hù)性。

擴(kuò)展

框架包含了常用的基礎(chǔ)組件,為了支持使用一些特殊的組件,框架集成了composer,并且提供了基于組件的擴(kuò)展能力。

總結(jié)

最后,經(jīng)過三個(gè)多月開發(fā),框架開發(fā)完成,并且已經(jīng)成熟在幾個(gè)產(chǎn)品使用;框架的有些地方可能還需要不斷優(yōu)化,也歡迎大家提及各種Issue,我們的目標(biāo)是打造一款國(guó)內(nèi)、優(yōu)秀的PHP框架。

最后直接列一下框架以及開發(fā)手冊(cè)。:)

BetePHP: https://github.com/betephp/be...
中文手冊(cè): http://betephp.com/zh/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/50504.html

相關(guān)文章

  • 什么還要一個(gè)PHP框架?

    摘要:最后討論決定自己開發(fā)一個(gè)框架,于是就開始了整體框架的設(shè)計(jì)。設(shè)計(jì)框架首先是底層框架,設(shè)計(jì)底層框架的第一個(gè)問題就是如何管理框架的所有類及其依賴關(guān)系,對(duì)比成熟的方案有依賴注入和基于組件設(shè)計(jì)兩種方案。 背景 事情源于在做框架選型的時(shí)候,我們對(duì)業(yè)務(wù)需要的技術(shù)棧進(jìn)行了分析,發(fā)現(xiàn)我們需要的框架只需要包含路由、數(shù)據(jù)庫(kù)、Redis、日志,就可以滿足需求了,大家討論后開始著手框架的選擇。 選型 討論框架選...

    caohaoyu 評(píng)論0 收藏0
  • 什么還要一個(gè)PHP框架

    摘要:最后討論決定自己開發(fā)一個(gè)框架,于是就開始了整體框架的設(shè)計(jì)。設(shè)計(jì)框架首先是底層框架,設(shè)計(jì)底層框架的第一個(gè)問題就是如何管理框架的所有類及其依賴關(guān)系,對(duì)比成熟的方案有依賴注入和基于組件設(shè)計(jì)兩種方案。 背景 事情源于在做框架選型的時(shí)候,我們對(duì)業(yè)務(wù)需要的技術(shù)棧進(jìn)行了分析,發(fā)現(xiàn)我們需要的框架只需要包含路由、數(shù)據(jù)庫(kù)、Redis、日志,就可以滿足需求了,大家討論后開始著手框架的選擇。 選型 討論框架選...

    崔曉明 評(píng)論0 收藏0
  • 什么還要一個(gè)PHP框架?

    摘要:最后討論決定自己開發(fā)一個(gè)框架,于是就開始了整體框架的設(shè)計(jì)。設(shè)計(jì)框架首先是底層框架,設(shè)計(jì)底層框架的第一個(gè)問題就是如何管理框架的所有類及其依賴關(guān)系,對(duì)比成熟的方案有依賴注入和基于組件設(shè)計(jì)兩種方案。 背景 事情源于在做框架選型的時(shí)候,我們對(duì)業(yè)務(wù)需要的技術(shù)棧進(jìn)行了分析,發(fā)現(xiàn)我們需要的框架只需要包含路由、數(shù)據(jù)庫(kù)、Redis、日志,就可以滿足需求了,大家討論后開始著手框架的選擇。 選型 討論框架選...

    omgdog 評(píng)論0 收藏0
  • Laravel 深入核心系列教程

    摘要:前言年底了不太忙,最近一段時(shí)間也一直在研究,就想寫篇關(guān)于比較深一點(diǎn)的教程系列啥的,于是就找到站長(zhǎng)給開了寫教程的渠道。優(yōu)點(diǎn)的就是為藝術(shù)家創(chuàng)造的框架,它也是工程化的趨勢(shì)。項(xiàng)目維護(hù)方便也是事實(shí)。如果有遇到問題可以直接在教程下面留言。 前言 年底了不太忙,最近一段時(shí)間也一直在研究laravel,就想寫篇關(guān)于laravel比較深一點(diǎn)的教程系列啥的,于是就找到站長(zhǎng)給開了寫教程的渠道。由于第一次寫,...

    wemall 評(píng)論0 收藏0
  • 什么要開發(fā)一個(gè) MixPHP 框架

    摘要:異步隊(duì)列消費(fèi)者開發(fā)只提供了模式下運(yùn)行控制器方法,并未提供主進(jìn)程多子進(jìn)程的進(jìn)程模型,并未提供多線程處理。多線程異步隊(duì)列服務(wù)只需寫好控制器方法,然后在配置文件中配置下路由命名空間進(jìn)程線程數(shù)量,就可在模式中啟動(dòng)多進(jìn)程多線程模型的異步隊(duì)列處理程序。 最近業(yè)余時(shí)間一直在開發(fā)ExpressPHP的第二個(gè)版本 MixPHP,今天下班想起之前一個(gè)面試官的問題:你為什么還要再造一個(gè)輪子呢?仔細(xì)回想,第一...

    SnaiLiu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<