亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 包配置不合并

Laravel 包配置不合并

PHP
qq_遁去的一_1 2023-04-28 14:23:17
我正在開發幾個包,如果要發布它們,我想為所有這些包提供一個配置文件。在我的服務提供商內部,我這樣做了:public function boot(){    $this->publishes([        __DIR__ . '/config/custom.php' => config_path('custom.php'),    ]);}public function register(){    $this->mergeConfigFrom(        __DIR__ . '/config/custom.php', 'custom'    );}配置:return [    'containers' => [        ...    ]];當然,如果我發布它,它會創建一個包含內部值的文件。但是如果一個文件已經存在,有不同的鍵:return [    'xxxyyy' => [        ...    ],];發布不做任何事情。我希望它看起來像:return [    'xxxyyy' => [        ...    ],    'containers' => [        ...    ]];我究竟做錯了什么?
查看完整描述

1 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

如果其他人對此感到困惑,我已經測試了幾個案例,這是我的解釋。

$this->publishes部分使包配置能夠通過vendor:publish命令發布。這里沒什么好解釋的。

$this->mergeConfigFrompart 使包配置能夠與當前發布的副本合并。在這種情況下合并意味著從 Laravelconfig()范圍合并。

這意味著如果沒有已發布的文件并且您artisan tinker沒有.?如果一個文件已發布并且具有其他鍵值對,這些鍵值對不存在于您的包配置中而您已經存在,則將返回已發布文件中的合并值數組以及您的配置中的值。config('key')mergeConfigFrommergeConfigFromconfig('key')

如果您的根配置文件夾中存在具有相同配置名稱的文件,并且您的包在內部使用相同的配置名稱但您沒有,mergeConfigFromconfig('key')僅返回根配置文件夾中文件的內容,并將忽略包中的所有內容因為您沒有為 Laravel 提供將其視為“全局”配置的方法。您的包將繼續在內部使用包配置,但您將無法從應用范圍獲取它。


查看完整回答
反對 回復 2023-04-28
  • 1 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號