亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

關于Laravel Service Provider開發設置延遲加載時遇到的問題詳解

2024-05-05 00:01:46
字體:
來源:轉載
供稿:網友

前言

本文主要介紹了關于Laravel Service Provider設置延遲加載時遇到的一些問題,之所有這篇文章,是因實際項目需求,近日在開發 laravel-database-logger 包的時候,發現設置 ServiceProvider defer 屬性設置為 true 時,會導致在 register 方法中注冊的 middleware 無效。

class ServiceProvider extends /Illuminate/Support/ServiceProvider{ protected $defer = true;  public function register() { $this->mergeConfigFrom(  __DIR__ . '/../config/config.php', 'ibrand.dblogger' ); $this->app->singleton(DbLogger::class, function ($app) {  return new DbLogger(); }); //當 $defer 設置為 true 時,在路由中引用 databaselogger middleware 會報錯,提示 databaselogger class not found. $this->app[/Illuminate/Routing/Router::class]->middleware('databaselogger', Middleware::class); }  public function provides() { return [DbLogger::class]; }}

當問題出現的時候就懷疑是因為設置了 defer 屬性設置為 true 導致的,立刻就修改源碼把 protected $defer = true; 的代碼注釋掉,結果仍然是提示 databaselogger class not found. ,說明 Laravel 并沒有注冊此 ServiceProvder

接下來就是想如何解決此問題,嘗試了下面的方法:

1. 驗證本身代碼是否存在問題

在正常注冊的 AppServiceProvider 中注冊自己的 ServiceProvider

public function register() { // $this->app->register(/Ibrand/DatabaseLogger/ServiceProvider::class); }

注冊后結果一切正常。

2. 研究源碼

在 config/app.php 中 providers 注冊無效,但是在其他 ServiceProvider 中注冊有效,說明是其他問題。

通過研究 Illuminate/Foundation/Application 源碼找到 registerConfiguredProviders 方法:

Laravel 是在此方法中去讀取 config/app.php 中的 providers 內容并load到 ProviderRepository 中。

(new ProviderRepository($this, new Filesystem, $this->getCachedServicesPath()))     ->load($providers->collapse()->toArray());

重點在 $this->getCachedServicesPath()  ,通過源碼發現 Laravel 是根據 bootstrap/cache/services.php 文件去決定如何注冊 ServiceProvider。

此時想到了為什么之前注釋了 //protected $defer = true; 代碼后仍然無效的原因。

所以為了讓注釋后的 //protected $defer = true; 代碼有效需要執行

php artisan clear-compiled php artisan optimize

之后問題就解決了,也更加深入理解了 ServiceProvider 的原理。

所以切記:如果準備采用延遲加載ServiceProvider時,嚴禁進行注冊 middleware, route 等系列操作。同時,更改 defer 屬性值后,需要執行 php artisan clear-compiled php artisan optimize 以更新 ServiceProvider 緩存。

3. 為什么 AppServiceProvider 中注冊有效?

愿意很簡單,因為 AppServiceProvider 并沒有延遲加載,因此在執行 AppServiceProvider 中 register 方法去注冊新的 ServiceProvider 也是不會延遲加載的。

總結

謹慎使用延遲加載 ServiceProvider

更改 defer 屬性值后,需要執行 php artisan clear-compiled php artisan optimize 以更新 ServiceProvider 緩存。

嚴禁在延遲加載的 ServiceProvider 注冊 middleware 和 route 。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美裸体xxxx极品少妇软件| 中文字幕在线观看亚洲| 欧美国产日韩一区二区三区| 午夜美女久久久久爽久久| 91九色综合久久| 久久av在线播放| 国产精品久久久久久久一区探花| 97精品国产97久久久久久春色| 久久精品国产精品亚洲| 精品国内产的精品视频在线观看| 亚洲人精选亚洲人成在线| 亚洲高清久久久久久| 热草久综合在线| 亚洲精选中文字幕| 欧美超级乱淫片喷水| 欧美激情精品久久久久久久变态| 欧洲成人免费视频| 国产精品视频区| 日韩国产欧美区| 91精品国产99久久久久久| 亚洲人成绝费网站色www| 久久6精品影院| 2019中文字幕免费视频| 欧美又大又硬又粗bbbbb| 久久视频在线观看免费| 色偷偷91综合久久噜噜| 国产专区欧美专区| 成人高清视频观看www| 亚洲黄一区二区| 2019中文字幕在线观看| 日韩在线观看免费高清| 亚洲**2019国产| 国产精品专区第二| 亚洲欧美国产高清va在线播| 国内精品久久久久久| 亚洲欧美日韩在线一区| 久热99视频在线观看| 亚洲欧美三级在线| 日韩毛片在线观看| 亚洲va码欧洲m码| 国产深夜精品福利| 久久精品国产久精国产一老狼| 日韩天堂在线视频| 国产精品毛片a∨一区二区三区|国| 国产精品揄拍一区二区| 亚洲人av在线影院| 国产精品99蜜臀久久不卡二区| 国产在线不卡精品| 亚洲一级免费视频| 91亚洲午夜在线| 亚州国产精品久久久| 亚洲欧美日韩中文视频| 中文.日本.精品| 欧美在线视频观看| 久久国产精品亚洲| 精品国产31久久久久久| 亚洲的天堂在线中文字幕| 欧美日韩另类字幕中文| 日韩亚洲欧美中文在线| 久久香蕉国产线看观看av| 日韩中文有码在线视频| 中文字幕欧美日韩va免费视频| 日韩av免费在线看| 亚洲男人天堂九九视频| 精品久久久久久久久久ntr影视| 国产日韩精品入口| 欧美黑人性视频| 欧美在线视频一区二区| 国产一区视频在线播放| 国产亚洲欧美aaaa| 久久电影一区二区| 亚洲欧洲午夜一线一品| 一区二区三区视频在线| 一区二区三区精品99久久| 国产69久久精品成人看| 国产精品免费观看在线| 国产精品成av人在线视午夜片| 日韩有码在线视频| 久久中文字幕一区| 国产精品白嫩初高中害羞小美女| 亚洲美女av在线| 午夜精品三级视频福利| 欧美成年人视频网站欧美| 欧美日韩国产专区| 亚洲精品国产品国语在线| 欧美视频二区36p| 国产精品久久久久久久久久久不卡| 欧美日韩中文字幕日韩欧美| 久久亚洲综合国产精品99麻豆精品福利| 亚洲午夜国产成人av电影男同| 色综合视频网站| 国产精品免费视频久久久| 国产午夜精品免费一区二区三区| 69av成年福利视频| 91av在线精品| 91亚洲午夜在线| 欧美视频一区二区三区…| 精品视频在线播放| 亚洲一区二区久久久| 欧美理论片在线观看| 精品国内产的精品视频在线观看| 91亚洲一区精品| 国产精品亚洲第一区| 成人国产在线激情| 精品激情国产视频| 日韩最新免费不卡| 亚洲最大成人免费视频| 久久69精品久久久久久国产越南| 不用播放器成人网| 日韩精品视频在线观看免费| 亚洲第一中文字幕在线观看| 国产精品视频一区二区高潮| 国产一区二区三区丝袜| 日韩网站在线观看| 欧美不卡视频一区发布| 精品久久久av| 日韩精品视频免费| 日韩av中文在线| 亚洲人成啪啪网站| 精品网站999www| 亚洲精品电影在线| 亚洲激情视频在线播放| 国产美女精品免费电影| 久久久av亚洲男天堂| 国产美女被下药99| 91精品久久久久久久久青青| 亚洲片av在线| 久久久久久久97| 亚洲乱码国产乱码精品精| 国产日韩欧美中文在线播放| 欧美亚洲一区在线| 欧美黑人xxxⅹ高潮交| 在线播放国产精品| 国产精品久久久久久网站| 亚洲成人激情在线| 亚洲一级黄色片| 欧美第一黄色网| 欧美激情手机在线视频| 精品久久久久久久久久久久久久| 日韩欧美中文字幕在线播放| 国内精品免费午夜毛片| 91亚洲一区精品| 在线视频欧美日韩精品| 国产精品老女人精品视频| 欧美二区在线播放| 精品国产美女在线| 日韩免费看的电影电视剧大全| 午夜精品美女自拍福到在线| 8090成年在线看片午夜| 日韩av在线网址| 精品国产一区久久久| 少妇高潮久久77777| 777777777亚洲妇女| 亚洲欧美资源在线| 91精品国产99| 精品人伦一区二区三区蜜桃网站| 欧美成人精品影院| 国产精品白嫩初高中害羞小美女| 亚洲成人精品久久久| 色狠狠久久aa北条麻妃| 国产亚洲欧美日韩一区二区| 97热精品视频官网| www.久久久久| 日韩综合视频在线观看|