mouf / root-container
此包的最新版本(1.0.x-dev)没有可用的许可信息。
此包包含一个PHP DI容器检测器和聚合器。想法是每个composer包可能有一个DI容器,并将所有这些容器聚合到一个“root”容器中。
1.0.x-dev
2015-01-16 15:54 UTC
Requires
- php: >=5.4
- acclimate/container: ~1.0
- mouf/container-installer: ~1.0
README
RootContainer是一个外观,用于聚合应用程序中检测到的所有DI容器。
整体构想
最终目标是允许应用程序开发者轻松创建一个“root容器”,该容器可以自动检测并添加其他包中包含的容器到全局复合容器中,该容器可供应用程序使用。
与经典的应用程序思维相比,这是一个范式转变。
在“经典”应用程序中,添加到应用程序中的包可能会向主容器添加新的实例。这是SF2包、ZF2模块或Mouf2包所做的事情。
使用此方法,每个包都提供自己的DI容器,该容器包含实例。DI容器被添加到一个全局容器中,该容器被查询。
关于此包
使用Container-Installer组件检测其他容器。
此包使用检测到的包并将它们聚合到一个唯一的复合容器中。该容器以外观的形式公开。
所以基本上,使用RootContainer,您可以使用以下方式访问应用程序中任何容器的任何实例
$instance = RootContainer::get("instance_name");
在后台,RootContainer
将加载由Container-Installer生成的containers.php
文件,并实例化应用程序的所有容器。
一句忠告
拥有一个易于使用的容器外观并不能让您到处使用它 :) 否则,您就会使用RootContainer作为服务定位器,这在大多数人看来是一种不良实践(提示:RootContainer的作者也认为这是一种不良实践)。
因此,在理想的世界里,RootContainer应该只在您的应用程序中使用一次或两次,可能由您使用的MVC框架使用,以获取控制器,如此而已。
话虽如此,能够快速访问实例进行测试总是有用的。