2017-04-24 2 views
1

ich versuche zu faul, um einen Datenbank-Service von services.yml aber es scheint nicht, etwas zu zeigen, das auf dem Tun:Faule Dienstleistungen in symfony arbeiten nicht

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

Ich habe beides:

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

und

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

Es gibt nur ein leeres Array zurück. Was könnte ich falsch machen?

P.S. Ich verwende die Komponenten von Symfony und nicht das gesamte Framework.

+0

Wie ich sehen kann, wird standardmäßig ein "Noop" -Proxy generiert (RealServiceInstantiator-Klasse). Ich weiß nicht, warum es so ist. –

+0

Aber ich kann bestätigen, Lazy Load funktioniert nicht, wenn Sie nur offizielle Dokumente folgen (fügen Sie Composer-Anforderungen hinzu und verwenden Sie das Attribut faul = wahr. –

Antwort

0

Ich habe das gleiche Problem. Wenn Sie nicht das gesamte Symfony-Framework verwenden, sollten Sie den Proxy-Instantiator nach der Installation von symfony/proxy-manager-bridge und ocramius/proxy-manager festlegen, es sei denn, es wird verwendet, das stattdessen echte Objekte anstelle von Proxys erstellt.

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