我正在開發幾個包,如果要發布它們,我想為所有這些包提供一個配置文件。在我的服務提供商內部,我這樣做了: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->mergeConfigFrom
part 使包配置能夠與當前發布的副本合并。在這種情況下合并意味著從 Laravelconfig()
范圍合并。
這意味著如果沒有已發布的文件并且您artisan tinker
沒有.?如果一個文件已發布并且具有其他鍵值對,這些鍵值對不存在于您的包配置中而您已經存在,則將返回已發布文件中的合并值數組以及您的配置中的值。config('key')
mergeConfigFrom
mergeConfigFrom
config('key')
如果您的根配置文件夾中存在具有相同配置名稱的文件,并且您的包在內部使用相同的配置名稱但您沒有,mergeConfigFrom
將config('key')
僅返回根配置文件夾中文件的內容,并將忽略包中的所有內容因為您沒有為 Laravel 提供將其視為“全局”配置的方法。您的包將繼續在內部使用包配置,但您將無法從應用范圍獲取它。
- 1 回答
- 0 關注
- 145 瀏覽
添加回答
舉報
0/150
提交
取消