麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > PHP > 正文

基于php7實(shí)現(xiàn)的Beauty Framework框架(附代碼)

2020-03-22 20:05:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章給大家介紹的內(nèi)容是關(guān)于基于php7實(shí)現(xiàn)的Beauty Framework框架(附代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助

框架的核心鏈路是從開(kāi)始的請(qǐng)求路由解析到控制器的分發(fā),model的數(shù)據(jù)交互到響應(yīng)。
使用其他的框架實(shí)現(xiàn)會(huì)非常的笨重,集成的內(nèi)容太多,很多都不需要用到,所以借鑒其他框架寫(xiě)了一個(gè)簡(jiǎn)單實(shí)用的框架。

先從路由開(kāi)始來(lái)說(shuō):
1)路由
路由協(xié)議的規(guī)則是使用了正則表達(dá)的匹配,將不同的鏈接分發(fā)到不同的控制器上去,也支持調(diào)用匿名函數(shù)

// 第一種,使用匿名函數(shù)App::router()- get( / , function () { echo Beauty Framework. });
// 第二種,使用url分發(fā)到控制器App::router()- post( /user/info/[0-9]+(/[0-9]+)? , App/Controllers/UserController@getUserInfo 

其中實(shí)現(xiàn)的核心代碼:(是不是很簡(jiǎn)單)

if (is_string($lostrcallable) preg_match( !^([/a-zA-Z0-9]+)/@([a-zA-Z0-9]+)$! , $lostrcallable, $matches)) { $html' target='_blank'>class = $matches[1]; $method = $matches[2]; $callable = function () use ($class, $method) { static $obj = null; if ($obj === null) { $obj = new $class; return call_user_func_array(array($obj, $method), func_get_args()); }

2)控制器
沒(méi)有的,你指向的哪里,就可以在哪里進(jìn)行請(qǐng)求處理,但是按照MVC,建議寫(xiě)到Controller里,大家都是這么認(rèn)為的,就這么做;

3)模型層
這里直接集成了Dao類(lèi),用于數(shù)據(jù)庫(kù)查詢(xún)操作,因?yàn)楝F(xiàn)在很多都在使用MySQL,就耦合地實(shí)現(xiàn)了MySQL的常規(guī)操作,因?yàn)閿?shù)據(jù)庫(kù)的原生操作會(huì)引起很多的注入等問(wèn)題,沒(méi)有支持直接Qquery的方式來(lái)做。

4)DAO層
因?yàn)楹芏嗲闆r下都要進(jìn)行讀寫(xiě)分離,但是要使用MySQL Proxy來(lái)實(shí)現(xiàn),有太過(guò)笨重,所以實(shí)現(xiàn)了支持?jǐn)?shù)據(jù)庫(kù)query根據(jù)不同的sql分別使用master和slave數(shù)據(jù)庫(kù)。
怎么做的?

就是根據(jù)不用的查詢(xún)操作直接劃分,Select查詢(xún)操作直接分到讀庫(kù),Insert、Update、Delete直接分到寫(xiě)庫(kù)。也可以直接使用onMasterConnection/onSlaveConnection直接指定.

看看Select怎么做的,這部分是實(shí)現(xiàn)邏輯:

 /** * 獲取查詢(xún)內(nèi)容,以數(shù)組形式返回,數(shù)據(jù)內(nèi)為array。 * @access public * @param integer|array $limit Array to define SQL limit in format Array ($count, $offset) * or only $count * @return mixed Array of Clients protected function get($limit = null) $this- dbClient- setQueryChannel($this- channel); $results = $this- dbClient- arrayBuilder()- get($this- dbTable, $limit, $this- fields); $this- _reset(); if ($this- dbClient- count == 0) { return []; return $results; }

5)配置類(lèi)
在開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境會(huì)使用不同的配置環(huán)境,在框架中可以創(chuàng)建.env環(huán)境來(lái)切換。在config中可以常規(guī)設(shè)置development和production,使用哪個(gè)環(huán)境就在.env設(shè)置哪個(gè)

; This is a environment configuration fileenvironment=development

當(dāng)然也有一些公共的配置信息,可以在config文件里直接設(shè)置,這樣就可以在哪個(gè)環(huán)境都可以使用。

// 支持使用.連接訪(fǎng)問(wèn)配置項(xiàng),訪(fǎng)問(wèn)的是config/app.php中的config key/Beauty/Core/App::config()- get( app.config 

6)請(qǐng)求響應(yīng)
因?yàn)椴恍枰猇iew,只需要返回json數(shù)據(jù),所以在Header直接寫(xiě)死了text/json。 = =

其他實(shí)現(xiàn)了

memcache和redis采用一致性哈希訪(fǎng)問(wèn)不同的實(shí)例。

validator驗(yàn)證類(lèi)

具體代碼都在github上 https://github.com/tigerk/Beauty

相關(guān)文章推薦:

Zend Framework框架Smarty擴(kuò)展實(shí)現(xiàn)方法,zendsmarty

Zend Framework框架路由機(jī)制代碼分析,zendframework

以上就是基于php7實(shí)現(xiàn)的Beauty Framework框架(附代碼)的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 激情夜色 | 97久色| 香蕉久久久久久 | 香蕉久久久 | 高潮娇喘嗯啊~文字 | 欧美不卡三区 | 中文字幕亚洲一区二区三区 | 精品无吗乱吗av国产爱色 | 国产资源在线免费观看 | 黄色一级视频 | 色就操| 日韩毛片在线看 | 12av毛片| 黄色网址免费在线播放 | 日本一区二区在线看 | 国产成人精品区 | 成人免费一区二区三区在线观看 | 亚洲免费永久 | 国产亚洲精品yxsp | 免费在线成人网 | 久久99久久99精品 | 久久精品色| 欧美大穴 | 视频一区二区国产 | 极品xxxx欧美一区二区 | 国产亚洲精品成人a | 特级黄aaaaaaaaa毛片 | 亚洲欧美一区二区三区在线观看 | 女人裸体让男人桶全过程 | 视频一区二区中文字幕 | 草逼一区 | 亚洲成人福利在线 | 午夜视 | 亚洲天堂在线电影 | 国产午夜探花 | 欧美在线观看禁18 | 九色91视频 | 国产精品免费成人 | 亚洲一区二区三区在线免费观看 | 久久久久性 | 免费观看一级黄色片 |