config下的A文件怎么读取B文件的配置项呢?

我想在 config/app.php 里面读取 config/xxx.php 里配置的name项。怎么读取呢?

比如下面这段代码里

    'public' => [
        'driver' => 'local',
        'root' => public_path('uploads'),
        'url' => config('xxx.name').'/uploads',
        'visibility' => 'public',
    ],

里面的config('xxx.name')是读不出来配置的。无效的。有什么办法吗?

乌鸦嘴社区 wyz.xyz 来玩。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

file

加载应用时,会逐个读取配置文件的选项存进一个配置数组里。从 config 文件夹下读取文件列表,根据文件名进行排序后,会先读取 app.php 文件,在 app.php 中出现例如 config('database.default') ,由于还未加载 database.php 文件,因此在配置数组中找不到该配置选项,就得到 null 结果了。

最后还是建议尽可能在 config 文件中使用 env 函数吧,这个函数的设计就是为了 config 文件服务的。在 config 文件中用 config 函数跟作者的用意是不相符的。或者也可以自己写一个方法去读取配置。

4年前 评论
讨论数量: 5

把 config('xxx.name') 改为 对应的 env('XXX_NAME'),就好了

4年前 评论
shebaoting (楼主) 4年前

可以借鉴楼上的答案,两个配置项共用一个 env 配置,或者两个都固定一下。由于加载顺序问题是无法直接读取另一配置文件的。

4年前 评论
JaguarJack

没有办法

4年前 评论

file

加载应用时,会逐个读取配置文件的选项存进一个配置数组里。从 config 文件夹下读取文件列表,根据文件名进行排序后,会先读取 app.php 文件,在 app.php 中出现例如 config('database.default') ,由于还未加载 database.php 文件,因此在配置数组中找不到该配置选项,就得到 null 结果了。

最后还是建议尽可能在 config 文件中使用 env 函数吧,这个函数的设计就是为了 config 文件服务的。在 config 文件中用 config 函数跟作者的用意是不相符的。或者也可以自己写一个方法去读取配置。

4年前 评论
快乐壮

在服务提供者里动态的读取设置就可以吧 在config 配置文件里读取 config 函数应该还没有初始化吧

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!