![]() |
![]() ![]() |
![]() |
![]()
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
czyli w yaml wyjdzie coś takiego
dlaczego zamiast factory nie jest użyta dyrektywa class i calls?
Czy to wszystko jedno czy jest w tym jakiś sens? Ten post edytował koszykarze 26.07.2016, 20:54:26 |
|
|
![]()
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. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 10.10.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
nie chodzi mi o to dlaczego serwis nie jest zdefiniowany w yaml a php. (napisałem w yaml żeby uprościć)
Mi chodzi o to dlaczego jest użyte factory zamiast class i calls przy konstrukcji tego dekoratora (jakkolwiek te dyrektywy się definiuje w php). jest tam zawarta dodatkowa logika, której nie powinno raczej być bezpośrednio w konstruktorze. ja nie mówię o konstruktorze a o calls. po prostu zastanawiałem się czy 1) chcąc nadpisać wywoływaną metodę usługi w Extension muszę to robić z użyciem factory i czy 2) chcąc nadpisać usługę dodając dyrektywę factory muszę najpierw użyć dekoratora Czy nie można by 1) nadpisać tag, klasę, calls, i arguments z użyciem dekoratora bez factory i czy nie można by 2) nadpisać tag, klasę, calls, i arguments z użyciem factory bez dekoratora Czy dekorator i faktory są ze sobą związane przy nadpisywaniu usług w Extension. Ten post edytował koszykarze 27.07.2016, 09:49:32 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
factory i calls to są dwie różne rzeczy. Factory tworzy Twój obiekt, a calls wywołuje funkcje na tym utworzonym obiekcie. Możesz fabryką utworzyć obiekt a potem wywołać na nim metodę.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 10.10.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
[sql][/sql]
factory i calls to są dwie różne rzeczy. Factory tworzy Twój obiekt, a calls wywołuje funkcje na tym utworzonym obiekcie. Możesz fabryką utworzyć obiekt a potem wywołać na nim metodę. zrobiłem z tego kodu "foo, bar, baz" by zrobić generalne pytanie a nie napisałem, że w rzeczywistym kodzie ta metoda factory zwraca tablicę stąd moje dociekania czy dekorator musi używać faktory do nadpisywania usług. Dobra, rozumiem że to wszystko jedno, po prostu autorowi chciało się factory użyć tym razem. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:32 |