mouf / interop.silex.di
该项目是Silex微框架的一个非常简单的扩展。它为Silex添加了使用任何DI容器(而不仅仅是Pimple)的功能。
Requires
- container-interop/container-interop: ~1.0
- mouf/pimple-interop: ~2.0
- silex/silex: ~1.0
README
该项目是Silex微框架的一个非常简单的扩展。它使得Silex能够使用任何与container-interop兼容的依赖注入容器(而不仅仅是Pimple)。
要使用此功能,您只需使用扩展的Mouf\Interop\Silex\Application
类,该类扩展了Silex\Application
类。
为什么?
Silex是一个微框架。它建立在Pimple之上,一个用约80行代码编写的非常简单的依赖注入容器(DIC)。Pimple是一个不错的DIC,但随着项目的增长,它可能会变得相当冗长。并且,Silex本身没有使用其他DIC的方法(Silex的Application
类扩展了Pimple
类)。
此项目允许您直接在Silex项目中添加任何其他依赖注入框架。您不需要填充$app
变量来注入依赖项,而是可以在自己的容器中注册条目。您容器中声明的实例将可以使用Pimple的$app['my.instance']
语法访问。
如何操作?
扩展的Application
类有一个修改过的构造函数
- __construct(ContainerInterface $container = null, array $values = array())
传递给参数的容器是一个代理查找容器。
完成此操作后,您可以使用$app
对象访问容器中声明的任何实例,就像在Silex项目中一样。
您的DI容器必须遵守ContainerInterface
,它在此container-interop项目中描述。
我可以在Silex中插入哪些DI容器?
开箱即用,您可以将container-interop支持的任何DI容器插入Silex。它们有很多!
安装
此类作为Composer包分发。
{
require: {
"mouf/interop.silex.di" : "~2.0"
}
}
查看示例
查看此用例:使用Mouf框架创建Silex控制器
您是Symfony 2用户吗?
有一个非常类似的包用于Symfony 2应用程序。它允许您向主Symfony 2容器添加额外的容器:查看:interop.symfony.di