Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF]Dlaczego usługę dekorować fabryką w Extension?
koszykarze
post
Post #1





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

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


w FOSElasticaBundle w Extension jest taki fragment

  1. $Def = new DefinitionDecorator('foo');
  2. $Def->replaceArgument(0, $bar);
  3. $Def->addTag('baz', array( 'name' => $qux, ));
  4. $Def->setFactory(array(new Reference('quux'), 'corge'));


czyli w yaml wyjdzie coś takiego

  1. services:
  2. foo:
  3. arguments:
  4. - '$bar'
  5. tags:
  6. - { name: baz }
  7. factory: ["@quux", corge]


dlaczego zamiast factory nie jest użyta dyrektywa class i calls?
  1. services:
  2. foo:
  3. arguments:
  4. - '$bar'
  5. tags:
  6. - { name: baz }
  7. class: @quux
  8. calls: corge

Czy to wszystko jedno czy jest w tym jakiś sens?

Ten post edytował koszykarze 26.07.2016, 20:54:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Patrząc bardzo szybko na skrawek kodu:
1. Co jeżeli wartość $bar ($indexName w oryginalnym kodzie) jest nieco trudniejsza do ustalenia - wymaga jakiejś logiki? Tak jest w tym przypadku.
2. Dlaczego użyta jest fabryka? Zobacz na jej kod (https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/5f09daac95cfad96a99867c064e396d24f743567/Elastica/Client.php#L68), jest tam zawarta dodatkowa logika, której nie powinno raczej być bezpośrednio w konstruktorze.
3. Być może dałoby się to jakoś obejść by zachować czysty zapis w XML/YAML, ale... po co? Tak kod jest prosty i zrozumiały.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 21:25