我正在开发一个软件包,Laravel应用程序可以使用它。程序包具有ServiceProvider,供消费者在要实例化程序包中的内容时使用。
现在,我想在包自己的测试中使用此ServiceProvider来解决依赖关系。如果可能,请进行集成测试。
我该怎么做?
看起来resolve()
依赖于app()
,所以我假设Laravel服务容器不是独立的,只能在应用程序内部使用是正确的吗?
答案 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