国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

從ThinkPHP6移植到Webman的一些技術(shù)和經(jīng)驗(yàn)(干貨)

深林孤鷹

把ThinkPHP的官方文檔擼了3遍以上,Webman擼了兩邊,再加上實(shí)際項(xiàng)目的開發(fā)和對(duì)比,才有的本文章,希望能幫到大家,如有錯(cuò)誤和疏漏請(qǐng)不吝賜教~

1、webman內(nèi)存常駐,業(yè)務(wù)執(zhí)行只有3個(gè)流程(框架接收請(qǐng)求、框架執(zhí)行業(yè)務(wù)邏輯、框架將結(jié)果返回給客戶端);TP業(yè)務(wù)流程從 nginx/apache接收請(qǐng)求 到 php-fpm初始化環(huán)境,如創(chuàng)建變量列表 到 框架初始化(載入 Composer 的自動(dòng)加載 autoload 文件 開始),如實(shí)例化各種類,包括如容器、控制器、路由、中間鍵等 到 數(shù)據(jù)庫、Redis的連接、使用釋放 到 php-fpm釋放資源、銷毀所有類定義、實(shí)例、銷毀符號(hào)表等 到 php-fpm將結(jié)果轉(zhuǎn)發(fā)給nginx/apache 到 nginx/apache將結(jié)果返回給客戶端 等很多重復(fù)步驟。
2、webman沒有pathinfo,只能使用常規(guī)POST、GET等來傳遞參數(shù),但可以用路由來定義參數(shù)來實(shí)現(xiàn)類似功能;TP有pathinfo,默認(rèn)為 參數(shù)/值。。。,可配置格式(個(gè)人感覺過度封裝)。
3、webman默認(rèn)不支持自動(dòng)注入(需要安裝插件),每個(gè)方法的第一個(gè)參數(shù)貌似必須是Request對(duì)象,后面才是相關(guān)的路由變量傳遞的參數(shù);TP默認(rèn)支持自動(dòng)注入(將參數(shù)中的對(duì)象自動(dòng)注入容器中已有的對(duì)應(yīng)類型)。
4、Request、Response、Controller、Route、Middleware、view、ExceptionHaddler、多應(yīng)用 方面,大體功能是差不多的,Webman比較精簡,TP比較全面(有點(diǎn)凌亂不好記),有一些小區(qū)別:
多應(yīng)用:TP單和多只能使用一種;而Webman默認(rèn)兩種同時(shí)可用(注意單應(yīng)用的路由有可能會(huì)和多應(yīng)用目錄沖突),也有多應(yīng)用模塊插件可以支持更多的功能。
中間件:Webman不支持控制器中間件,全局、應(yīng)用、路由中間件都大同小異。
路由:
a、TP的路由是一條條解析,匹配即進(jìn)入,路由可重復(fù)定義;Webman稍有不同,定義時(shí)如果有相同路由,則控制臺(tái)會(huì)報(bào)錯(cuò)無法啟動(dòng)服務(wù)(好處是及時(shí)能發(fā)現(xiàn)錯(cuò)誤)。
b、TP默認(rèn)支持多個(gè)路由文件(route目錄,自動(dòng)執(zhí)行),自動(dòng)載入;而Webman默認(rèn)單個(gè)路由文件(config目錄下的route.php)(稍微修改下可以做到類似的功能);
c、TP的多層次目錄,是用 . 來分隔;而1.4之后的版本的webman也支持多層次目錄,用 / 分隔。
d、路由規(guī)則的第一個(gè)參數(shù):Webman是 / 開頭,而TP不是;
e、TP的路由規(guī)則的第二個(gè)參數(shù):TP是[控制器類, '方法'],TP是 字符串(包含目錄、控制器名和方法)。
f、都不匹配的路由:TP是route::miss,Webman是route::fallback;
g、資源路由:第二個(gè)參數(shù) 和 指定方法 稍有不同;
h、TP的資源路由和Webman的資源路由名稱對(duì)應(yīng):
TP:['index', 'read', 'save', 'update', 'delete']
Webman:['index', 'show', 'store', 'update', 'destroy']
i、路由變量定義:
TP:用 <xx> 或 :xx,可選為:[:month] 或 <month?>
Webman:用{xx},可選為:[{xx}]
j、TP的 路由變量 也會(huì)出現(xiàn)在 Request 中讀取,而 Webman 沒有;
k、TP的路由變量的值,為字母、數(shù)字、.號(hào)、_號(hào)組成,其他的都不會(huì)出現(xiàn)(后面的也會(huì)被截?cái)啵?
Webman的路由變量的值,除了 #號(hào)、?號(hào)、/號(hào)、\號(hào) 外都支持。
l、路由變量的匹配:
TP:路由變量名 和 方法的參數(shù)名 必須一致,否則出錯(cuò),它會(huì)按 名稱 來給參數(shù)賦值;
Webman:路由變量名隨便定義,它會(huì)按 順序 給方法的參數(shù)一一賦值;
m、返回的路由地址區(qū)別:
TP:app('request')->rule()->getRule();
返回的路由地址 不是 /號(hào) 開頭,路由變量格式:<xx>;
Webman:$request->route->getPath();
返回的路由地址 以 /號(hào) 開頭,路由變量格式:{xx};
l、TP支持Delete的body,webman不支持,會(huì)交替循環(huán)的出現(xiàn)404錯(cuò)誤。

5、插件、擴(kuò)展、模塊:webman 的 plugin目錄 類似于 TP 的 extend目錄,不過webman的命名空間是以 plugin\ 開頭的,而TP的可以和普通使用一樣。
6、容器:TP有app()助手函數(shù)(其實(shí)就是Container::getInstance()->make),可以實(shí)例化對(duì)象(參數(shù)3控制是否為新建);webman是用 Container來實(shí)例化對(duì)象(get為重用,make為新建)。
TP可以用 bind 綁定 標(biāo)識(shí) 到 容器 中(不知有何用)。
8、webman的輸出是輸出到控制臺(tái),而TP是輸出到頁面。
9、Webman的config便捷函數(shù)可以獲取配置(配置名為文件名),但只讀(有插件可增刪改);TP需要使用 think\facade\Config::get('文件名') 和 set($d, '文件名')來操作,TP的可讀可寫;
10、Webman可用TP的validate、orm(Db和Model)、Cache(Redis)、Captcha。
11、TP默認(rèn)支持 .env 文件;Webman需要安裝插件,或自己寫一個(gè);
注意:Webman配置文件中若使用某方法,必須寫在helper.php 而非 function.php 中,因?yàn)檩d入配置時(shí)function還沒載入。
12、門面:Webman不支持,因?yàn)殡m然方便書寫,但沒有代碼提示功能;
13、事件:TP默認(rèn)支持;Webman需要安裝插件;
TP:可以手動(dòng)注冊(cè)事件到處理器;Webman只能在 config/event.php 處理;
14、服務(wù):未知;
15、定時(shí)任務(wù):crontab插件
16、其他:
TP的控制器每次訪問都會(huì)重新構(gòu)造,并調(diào)用構(gòu)造函數(shù);Webman可以在 config/app.php 中開啟:'controller_reuse' => false,不推薦 action-hook 插件(有BUG);

附帶我開發(fā)和移植的兩個(gè)項(xiàng)目(精簡出的后臺(tái)框架)的地址:
Pear Admin TP:https://gitee.com/pear-admin/Pear-Admin-Think
Pear Admin Webman:https://gitee.com/leamus/pear-admin-webman (還有一點(diǎn)東西沒完善)

20209 6 24
6個(gè)評(píng)論

walkor

絕對(duì)好文。還有你的pear-admin很多人反饋非常棒

  • 深林孤鷹 2022-09-03

    謝謝作者大神,還有不好意思,這個(gè)此Pear Admin Webman非彼Pear Admin Webman,那個(gè)做的非常不錯(cuò),我這個(gè)只能用來學(xué)習(xí),哈哈~

  • walkor 2022-09-03

    從你的干貨分享來看,你的admin也錯(cuò)不了??

  • 深林孤鷹 2022-09-05

    有兩個(gè)小建議:1是能不能把 路由變量 給Request賦值一份呢,放在any里,畢竟意義上也是請(qǐng)求參數(shù);2是DELETE請(qǐng)求支持post內(nèi)容,或者也可以不支持,但目前這樣感覺是個(gè)漏洞,錯(cuò)誤出現(xiàn)在了服務(wù)端返回。。

smart

好東西,感謝分享

周小云

一直在想要不要寫通用的curd

  • 暫無評(píng)論
hongs

謝謝作者分享.

  • 暫無評(píng)論
hongs

謝謝作者分享~

  • 暫無評(píng)論
18227948197

tp6可以下載workerman直接啟動(dòng),代碼可以簡單修改即可

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表評(píng)論

深林孤鷹

260
積分
0
獲贊數(shù)
0
粉絲數(shù)
2022-07-11 加入
??