我开发了一个使用composer在新项目中导入的包。它的目录结构如下所示
vendor
package-name
src
config
config.php
... more elements
然后我使用
发布了配置文件php artisan config:publish vendor/package-name
该文件已复制到
app
config
packages
vendor
package-name
config.php
供应商目录中的配置类似于
array(
'user' => array( 'table' => 'users' ),
);
已发布目录中的配置类似于
array(
'user' => array( 'table' => 'anotherName' ),
);
现在,当我访问类似
的配置时Config::get('package-name::user.table');
返回值'users'
。似乎忽略了发布的文件。为什么呢?
答案 0 :(得分:1)
我们需要更多信息来明确回答这个问题,但这里有一些可能出错的事情的解释。
在服务提供商中注册包时,请调用以下方法:
$this->package("vendor/package");
这是执行此操作的默认方式,如果您这样做,则可以通过$value = Config::get("package::config.key");
访问配置。在这种情况下,包名称(在调用package()
方法时拼写出来)是配置的命名空间。 但,您必须注意没有命名空间冲突 - 我不确定如果您有两个具有相同名称的不同包会发生什么。
如果要为程序包配置定义自定义命名空间,可以这样执行:
$this->package("vendor/package", "mycustomnamespace");
然后你可以用
来引用配置项$value = Config::get("mycustomnamespace::config.key");
要进一步诊断此问题,我将从自定义命名空间开始 - 您是否可以通过指定自定义命名空间来使其工作?如果是这样,我会开始寻找冲突。
否则,您可以发布服务提供商和composer.json文件。