Patrzę w DependencyInjection/FOSElasticaExtension.php
class FOSElasticaExtension extends Extension { { //code $this->loadClients($config['clients'], $container); //code } /** * Loads the configured clients. * * @param array $clients An array of clients configurations * @return array */ { foreach ($clients as $name => $clientConfig) { $clientDef = new DefinitionDecorator('fos_elastica.client_prototype'); $clientDef->replaceArgument(0, $clientConfig); $clientDef->addTag('fos_elastica.client'); $container->setDefinition($clientId, $clientDef); 'id' => $clientId, 'reference' => new Reference($clientId), ); } }
chwilę wcześniej uczyłem się o dekoratorach w service container. Wynikało z tego, że jednak klasa definiowanego dekoratora musi być napisana też w php. Czyli co, powyżej sobie dynamicznie tworzę definicje serwisów tj dekoratory bez podania klasy?
a może tworząc obiekt DefinitionDecorator, wrzucając do konstruktora id dekorowanej definicji ('fos_elastica.client_prototype') to dekorator dziedziczy klasę dekorowanego serwisu?