symfony中的懒惰服务无法正常工作

时间:2017-04-24 16:55:30

标签: php symfony lazy-loading

我正在尝试从services.yml延迟数据库服务,但它似乎没有显示任何内容:

$db= $this->container->get('database');
var_dump(class_implements($db));

我做了两件事:

 composer require ocramius/proxy-manager
 composer require symfony/proxy-manager-bridge

services:
   database:
     class: Namespace\Database
     lazy:  true

它只返回一个空数组。我能做错什么?

P.S。我使用的是Symfony的组件,而不是整个框架。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。如果您不使用整个symfony框架,则应在安装symfony/proxy-manager-bridgeocramius/proxy-manager之后设置代理实例化器,除非它将使用仅创建真实对象而不是代理的RealServiceInstantiator

$containerBuilder = new ContainerBuilder();
$containerBuilder->setProxyInstantiator(new \Symfony\Component\DependencyInjection\LazyProxy\Instantiator\RuntimeInstantiator())

答案 1 :(得分:0)

对于Symfony版本4,您应该使用:

use Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator;
...
$containerBuilder = new ContainerBuilder();
$containerBuilder->setProxyInstantiator(new RuntimeInstantiator());
相关问题