我试图从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
它只返回一个空数组。我能做错什么?
附:我使用Symfony的组件而不是整个框架。
我有同样的问题。如果你不使用整个symfony框架,你应该在安装symfony/proxy-manager-bridge
和ocramius/proxy-manager
之后设置代理实例化器,除非它将使用仅创建真实对象而不是代理的RealServiceInstantiator
。
$containerBuilder = new ContainerBuilder();
$containerBuilder->setProxyInstantiator(new \Symfony\Component\DependencyInjection\LazyProxy\Instantiator\RuntimeInstantiator())
对于Symfony ver.4,您应该使用:
use Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator;
...
$containerBuilder = new ContainerBuilder();
$containerBuilder->setProxyInstantiator(new RuntimeInstantiator());