摘要:另外這個框架作為后端純框架。當前博客就是用這個組件寫的,代碼也在上。還需完善的一些地方近幾天抽空解決下自定義路由添加正則匹配。的格式換行數(shù)據(jù)內(nèi)容換行數(shù)據(jù)內(nèi)容最后一個目前是通過正則來解析處理的,如果設(shè)置了。使用生成臨時文件。
來自博客:神的尾巴,原文鏈接
已提交到github,路由組件代碼,代碼質(zhì)量一般,大家將就著看 : )
組件思路現(xiàn)在都是單入口,通過index.php配置組件,然后通過組件dispatch,來調(diào)用指定的控制器。
另外這個框架作為后端純Api框架。沒有PHP模板引擎,所有與前端的數(shù)據(jù)交互都通過json(推薦)或xml。所以要支持跨域,也要支持RESTFul風(fēng)格的請求。
當前實現(xiàn)了的一些特性自動調(diào)用控制器,處理請求。
專門解析參數(shù)的Param工具類。
PHP不處理PUT請求過來的參數(shù),添加Parser工具類,有解析器FormData,Json,用來處理前端發(fā)過來的數(shù)據(jù)。包含上傳文件的解析(設(shè)置到臨時文件,對于比較小的文件直接獲取文件內(nèi)容,可以自己配置)。
還需完善的一些地方(近幾天抽空解決下)當前博客就是用這個組件寫的,代碼也在github上。
自定義路由:添加正則匹配。
例如`/article/:id`,自動配置整數(shù),并設(shè)置到參數(shù)id。 [ "url" => "/article/:id", "filter" => [ "id" => "/d+/" ] #"controller" => "Article@detail" "real" => "/article/detail/:id" ]實現(xiàn)過程
composer.json配置
{ "name": "godtail/router", "description": "Easy router, no config, support RESTFul.", "license": "MIT", "require": { "php": ">=5.3.3" }, "autoload": { "psr-4": {"GodtailRouter": "./src"} } }需要的配置
"deep" => 2, #控制器層數(shù) "default" => ["Index", "index"], #默認,自動補全 "namespacePre" => "Service", #控制器命名空間前綴 "classSuffix" => "Service", #控制器類名后綴 "crossDomain" => [ #跨域設(shè)置 "allowOrigin" => "http://test.net", "maxAge" => "86400", "headers" => "Content-Type", "methods" => "OPTIONS, GET, PUT, POST, DELETE", ]如何獲得比較好的URL風(fēng)格
通過nginx rewrite,把匹配不到的url,rewrite為index.php?/$uri。
location / { try_files $uri $uri/ /index.php?/$uri; }
這樣godtail.cn/index.php?/article/tag,就可以寫成godtail.cn/article/tag。
路由分層和URL參數(shù)解析config的deep參數(shù),用來配置路由多少層,如果功能比較簡單可以只分為2層,如果分module,則可以分成3層。
獲取URL,根據(jù)/拆分。 例如`deep=2`, `godtail.cn/article/tag/page/2`,把page設(shè)置到Params。 Params: 保存著一個靜態(tài)變量$data,用來存放請求過來的參數(shù)。 提供get,set,parse方法。FormData的解析
如果通過POST過來的請求,PHP能夠處理,設(shè)置到$_POST或者$_FILES,但是如果是PUT請求,則需要自己處理php://input數(shù)據(jù)流。
FormData的格式
------boundary--------["--"+boundary] name=1 content-type=xxxx [換行] 數(shù)據(jù)內(nèi)容1 ------boundary--------["--"+boundary] name=2 content-type=xxxx [換行] 數(shù)據(jù)內(nèi)容2 ------boundary---------[最后一個"--"+boundary+"-"]
目前是通過正則來解析處理的,如果設(shè)置了saveFile。使用tempnam生成臨時文件。
啟用#設(shè)置配置 Router::config($config["router"]); #dispatch Router::dispatch();
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22011.html
摘要:是什么是一款頂級全棧開發(fā)框架。漸進式開發(fā)由于模塊的高度內(nèi)聚,可以將業(yè)務(wù)以模塊的形式沉淀,在多個項目中重復(fù)使用,既可貢獻到開源社區(qū),也可部署到公司內(nèi)部私有倉庫。模塊發(fā)布當項目中的模塊代碼穩(wěn)定后,可以將模塊公開發(fā)布,貢獻到開源社區(qū)。 EggBorn.js是什么 EggBorn.js是一款頂級Javascript全棧開發(fā)框架。 EggBorn.js是采用Javascript進行全棧開發(fā)的最佳...
摘要:解決思路服務(wù)器端渲染服務(wù)器端和前端公用同一個應(yīng)用,然后通過構(gòu)建工具及配置,確定哪些組件需要再服務(wù)器端渲染,那些組件需要再客戶端渲染。服務(wù)器端渲染,由框架與構(gòu)建工具配合,并依據(jù)一定的項目結(jié)構(gòu)和編碼方式,共同運行。 分離 為什么需要 前后端分離、web服務(wù)器與static服務(wù)器分離: 前端與后端耦合 (需求) 自動化、工程化的構(gòu)建前端的代碼 (基礎(chǔ)條件) 模塊化、組件化,項目共享代碼 (...
摘要:單頁面應(yīng)用的出現(xiàn)依然存在著爭議性,我們該如何看待他的兩面性呢接下來小生給大家總結(jié)一下他的優(yōu)缺點。單頁面應(yīng)用的優(yōu)勢無刷新體驗沒有了令人詬病的頁面頻繁刷新,同時節(jié)約瀏覽器資源,路由響應(yīng)比較及時,提升了用戶的體驗。 前端猿一天不學(xué)習(xí)就沒飯吃了,后端猿三天不學(xué)習(xí)仍舊有白米飯擺于桌前。IT行業(yè)的快速發(fā)展一直在推動著前端技術(shù)棧在不斷地更新?lián)Q代,前端的發(fā)展成了互聯(lián)網(wǎng)時代的一個縮影。而單頁面應(yīng)用的發(fā)展...
摘要:單頁面應(yīng)用的出現(xiàn)依然存在著爭議性,我們該如何看待他的兩面性呢接下來小生給大家總結(jié)一下他的優(yōu)缺點。單頁面應(yīng)用的優(yōu)勢無刷新體驗沒有了令人詬病的頁面頻繁刷新,同時節(jié)約瀏覽器資源,路由響應(yīng)比較及時,提升了用戶的體驗。 前端猿一天不學(xué)習(xí)就沒飯吃了,后端猿三天不學(xué)習(xí)仍舊有白米飯擺于桌前。IT行業(yè)的快速發(fā)展一直在推動著前端技術(shù)棧在不斷地更新?lián)Q代,前端的發(fā)展成了互聯(lián)網(wǎng)時代的一個縮影。而單頁面應(yīng)用的發(fā)展...
閱讀 1096·2021-11-16 11:44
閱讀 1377·2019-08-30 13:12
閱讀 2418·2019-08-29 16:05
閱讀 3082·2019-08-28 18:29
閱讀 918·2019-08-26 13:41
閱讀 3238·2019-08-26 13:34
閱讀 2607·2019-08-26 10:35
閱讀 942·2019-08-26 10:28