Laravel默认助手方法和Facade在自定义包上不起作用

时间:2018-11-02 09:59:03

标签: php laravel package

我正在开发一个自定义程序包,在该程序包中我需要访问配置数据。我能够通过刀片文件从config中提取数据,但是,当我尝试从我创建的任何自定义类中调用数据时,都会引发错误:

  

错误:调用未定义函数Acme \ Package \ config()

但是有趣的是,当我尝试使用立面Illuminate\Support\Facades\Config时,它找不到类。

有什么方法可以从配置(从程序包和/或应用程序)中检索数据?

<?php

namespace Acme\Package;

class MyClass {
    public function test() {
        config('app.name');
    }
}

更新:它在浏览器(Laravel项目中安装的软件包)中运行时有效,但在运行软件包的测试时失败

更新:如果有帮助,可以找到我的包裹here

hereconfig()的呼叫

可以找到失败的测试用例here

2 个答案:

答案 0 :(得分:0)

<?php

namespace Acme\Package;

class MyClass {
    public function test() {
        \Illuminate\Support\Facades\Config::get('app.name');
    }
}

尝试这样,以对Config Facade使用完整的名称空间。您也可以在名称空间下进行use语句以注入外观,然后使用Config::get('app.name)。它不起作用的原因是您的程序包无法解析该外观的名称空间,因为它位于IoC容器之外

答案 1 :(得分:0)

您应该尝试以下操作:

<?php

    namespace Acme\Package;
    use Config;

    class MyClass {
        public function test() {
            Config::get('app.name');

        }
    }

更新后的答案

请在config/app.php部分的aliases中添加以下行

'Config' => Illuminate\Support\Facades\Config::class,

然后在命令下运行

php artisan config:cache
php artisan cache:clear