【发布时间】:2017-11-03 12:05:42
【问题描述】:
我正在使用 Symfony2 并希望将函数用作 Symfony2/3 依赖注入容器中的服务/工厂。这可能吗?如果默认不支持,是否可以扩展 DIC 以允许这样做?
两种情况:
- 使用“工厂”函数创建函数
- 使用“工厂”函数创建对象
示例配置:
# example service definition
services:
service_a:
function: MyNamespace\createGrobulator
arguments:
- "@logger"
- "@doctrine.orm.entity_manager"
service_b:
function: MyNamespace\createTitulator
arguments:
- "@service_a"
和示例实现:
function createGrobulator(LoggerInterface $logger, $em)
{
// do something here
return function ($x) use ($logger, $em) {
return something;
};
}
function createTitulator($serviceA) {
return new ObjectOfSomeType($serviceA);
}
可以使用带有__invoke() 方法的类来模拟这一点,但感觉非常冗长,好像不必要地遵守 OOP,如果您使用 PSR 建议,您最终会为了 (有时)非常小的函数。
【问题讨论】:
标签: php symfony dependency-injection