2017-04-24 183 views
1

我從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的組件,而不是整個框架。

+0

正如我所看到的默認情況下生成「noop」代理(RealServiceInstantiator類)。不知道爲什麼是這樣。 –

+0

但是我可以證實,如果您只是遵循官方文檔(添加作曲家要求並使用lazy = true屬性,則懶惰加載無效。 –

回答

0

我有同樣的問題。如果你不使用整個symfony框架,你應該在安裝symfony/proxy-manager-bridgeocramius/proxy-manager之後設置代理實例化器,除非它將使用RealServiceInstantiator來創建實際對象,而不是代理。

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