如何在程序包(应用程序外部)中使用Laravel的服务容器?

时间:2018-09-19 10:17:11

标签: laravel laravel-5

我正在开发一个软件包,Laravel应用程序可以使用它。程序包具有ServiceProvider,供消费者在要实例化程序包中的内容时使用。

现在,我想在包自己的测试中使用此ServiceProvider来解决依赖关系。如果可能,请进行集成测试。

我该怎么做?

看起来resolve()依赖于app(),所以我假设Laravel服务容器不是独立的,只能在应用程序内部使用是正确的吗?

1 个答案:

答案 0 :(得分:0)

tldr; composer require illuminate/container

App::外观解析为Illuminate\Foundation\Application::class,并且在同一名称空间中找到了辅助函数(包括app())。因此,您需要composer require illuminate/foundation才能做到这一点。

但是,实际的容器在Illuminate\Container\Container处-这是上面的Application类扩展的基类,因此,您可以使用{{ 1}}。

我还应该注意,它们似乎共享相同的composer require illuminate/container,因此使用发光容器在Laravel和非Laravel应用中均应适用。

解析实例并通过自动依赖项注入调用方法的示例:

static::$instance