mouf / mvc.silex-mouf
该项目是对Silex微框架的一个非常简单的扩展。它为Silex添加了Mouf依赖注入能力。
1.0.x-dev
2013-09-06 20:02 UTC
Requires
- mouf/mouf: ~2.0
- silex/silex: ~1.0
This package is auto-updated.
Last update: 2024-09-15 04:42:00 UTC
README
该项目是对Silex微框架的一个非常简单的扩展。它为Silex添加了Mouf依赖注入能力。
为什么?
Silex是一个微框架。它建立在Pimple之上,Pimple是一个用大约80行代码编写的非常简单的依赖注入容器(DIC)。Pimple是一个不错的DIC,但随着项目的增长,它可能会变得相当冗长。并且Silex原生上没有使用另一个DIC的方法(Silex的Application
类扩展了Pimple
类)。
此项目允许您在Silex项目中直接使用Mouf,这是一个图形化依赖注入框架。您不需要填充$app
变量来注入依赖,而可以使用Mouf用户界面来声明实例。
如何?
扩展的Application
类只有一个附加方法:registerMoufManager()
。这是用于将Mouf DIC实例注册到Silex中的。
完成此操作后,您可以通过$app
对象访问Mouf中声明的任何实例,就像在Silex项目中一样。
以下是一个在Pimple中注入控制器的示例。
- 使用Composer安装此包。
- 此包依赖于Mouf。一旦下载Mouf,您需要安装Mouf。
- 然后,声明一个简单的测试控制器
<?php namespace Example\Controller; use Symfony\Component\HttpFoundation\JsonResponse; class TestController { private $text; public function __construct($text) { $this->text = $text; } public function testAction() { return new JsonResponse(array("hello"=>$this->text)); } }
- 创建一个实例
mycontroller
以在Mouf中为您的控制器。完成此操作后,您应该在Mouf UI中看到以下内容
- 使用扩展的
Mouf\Silex\Application
类初始化您的应用程序// Load Mouf (and Composer's autoloader) require_once __DIR__.'/mouf/Mouf.php'; // Get Silex app with Mouf support $app = new Mouf\Silex\Application(); // Register Silex's controllers support $app->register(new Silex\Provider\ServiceControllerServiceProvider()); // Register the Mouf DI container $app->registerMoufManager(Mouf\MoufManager::getMoufManager()); // 'mycontroller' instance is declared in Mouf! $app->get('/hello', "mycontroller:testAction"); $app->run();
看看有多棒?您可以使用Pimple的简单路由机制,并摆脱构建依赖关系时的所有意大利面条式代码。
已知限制
此项目是一个概念验证。它证明了可以轻松地连接2个DI容器(此包包含... 10行代码!)它还显示了这种技术的局限性。实际上,从Mouf无法引用在Pimple中声明的对象(没有可能的往返)。然而,如果有关DIC互操作性的标准变得真实,这可能成为可能。