Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony]DependencyInjection/Extension.php i DefinitionDecorator, definicja dekoratora bez klasy?
koszykarze
post 17.02.2016, 22:51:50
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 10.10.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


uczę się Services, DI, compilerPass, Extension, Configuration. Patrzę w FOSElasticaBundle.

Patrzę w DependencyInjection/FOSElasticaExtension.php

  1. class FOSElasticaExtension extends Extension
  2. {
  3. public function load(array $configs, ContainerBuilder $container)
  4. {
  5. //code
  6.  
  7. $this->loadClients($config['clients'], $container);
  8.  
  9. //code
  10. }
  11.  
  12. /**
  13.   * Loads the configured clients.
  14.   *
  15.   * @param array $clients An array of clients configurations
  16.   * @return array
  17.   */
  18. private function loadClients(array $clients, ContainerBuilder $container)
  19. {
  20. foreach ($clients as $name => $clientConfig) {
  21. $clientId = sprintf('fos_elastica.client.%s', $name);
  22. $clientDef = new DefinitionDecorator('fos_elastica.client_prototype');
  23. $clientDef->replaceArgument(0, $clientConfig);
  24. $clientDef->addTag('fos_elastica.client');
  25. $container->setDefinition($clientId, $clientDef);
  26.  
  27. $this->clients[$name] = array(
  28. 'id' => $clientId,
  29. 'reference' => new Reference($clientId),
  30. );
  31. }
  32. }



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?

Ten post edytował koszykarze 18.02.2016, 04:48:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 09:00