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
 
Start new topic
Odpowiedzi
koszykarze
post 24.02.2016, 18:29:41
Post #2





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

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


brnijmy. (ja tu pobieram darmowy kurs, lekko zasugerowałem, że możesz już to olać bo ten temat zaczynam robić o wszystkim. Inna rzecz, że ta akurat kwestia nie jest chyba kluczowa). (Kluczowe dla mnie z tego tematu to załapanie, że serwis to nie klasa, faktycznie tak go utożsamiałem, i z tą myślą czytałem dziesiątki stron dokumentacji, blogi o DI, Services CompilerPass itp. Że to mniej więcej taka ładnie opakowana klasa, którą tak fajnie można w kontrolerze wywołać. Teraz rozumiem serwis(definicję) mniej więcej jako taki w pół utworzony obiekt. Że w tym kontenerze robię to, co i tak musiałbym zrobić w kontrolerze zaraz po, czy zaraz przed utworzeniem obiektu. To tak mocno upraszczając.)

brnijmy. Skoro tworząc definicję dekoratora w service container, i tak później w projekcie wywołuję nazwę serwisu dekorowanego to jakie znaczenie ma, z postu #7, czy methodCall jest wywoływany dla serwisu foo czy bar?
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: 14.08.2025 - 22:43