Laravel4无法读取包发布的配置文件,而是使用默认值

时间:2014-05-28 17:10:23

标签: php laravel laravel-4

我开发了一个使用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'。似乎忽略了发布的文件。为什么呢?

1 个答案:

答案 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文件。