Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Symfony2]Obiekty "pomocnicze" w Symfony
athabus
post 9.10.2015, 17:06:48
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Hej mam takie banalne pytanie odnośnie obiektów pomocniczych w Symfony - nie wiem jak ich używać aby było "symfony way".

Powiedzmy teraz pracuję nad selekcją rekordów z bazy przy czym parametrów jakie mogą zostać użyte do wyboru jest bardzo wiele i mogą one przyjmować różne wartości np. zakres, wartość z założoną precyzją, zgodność z maską bitową itp itd. Ogólnie postanowiłem sobie zrobić taki pomocniczy obiekt, który nazwę "filter", a w którym będzie można zdefiniować te wszystkie ograniczenia na zasadzie

  1. $filter->addPriceConstraint();
  2. $filter->addMaxHeight()
  3. itd itp.


Ogólnie idea jest taka, że na podstawie danych podanych przez użytkownika zostanie w kontrolerze stworzony filtr i wypełniony zostanie danymi po czym przekażę ten filtr do Repository, gdzie odpowiednia funkcja przerobi go na zapytanie sql'owe. I teraz pytanie czy to powinno działać np. jako usługa czyli
  1. $this->get('objectFilter')->createNewFilter()

czy myślę w zupełnie złym kierunku i jakoś inaczej powinno to być zrobione?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Crozin
post 10.10.2015, 13:54:36
Post #2





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

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


Nie ma tutaj czegoś takiego jak "symfony-way", a sposób wykonania tego będzie zależny przede wszystkim od tego jak bardzo rozbudowanego i elastycznego rozwiązania potrzebujesz.

1. To czy obiekty danej klasy będziesz tworzyć ręcznie przy pomocy new czy za pomocą kontenera uzależnione będzie przede wszystkim od faktu (nie) istnienia zewnętrznych zależności dla tego obiektu. Generalnie nie ma to większego znaczenia - klasa i tak powinna wyglądać identycznie, tj. wykorzystanie DIC-a nie wpływa na wygląd i sposób działania kodu.
2. Podstawowym pytaniem jest czy dostępne filtry są strukturą dynamiczną czy statyczną. W przypadku tej późniejszej zadanie jest dużo prostsze, ponieważ zapewne wystarczy, że stworzysz sobie obiekt reprezentujący wszystkie możliwe wybrane filtry, takie coś przekażesz jako argument do metody, który na podstawie wybranych kryteriów utworzy sobie jakieś zapytanie. Jeżeli jest to struktura dynamiczna sprawa się nieco skomplikuje. Możesz pomyśleć nad czymś w rodzaju zestawu klas reprezentujących różnego rodzaju filtry (np. zakres numeryczny od-do, lista wyboru) implementujący wspólny interfejs. Do tego kilka "ukrytych" właściwości informujących jakiej właściwości/kolumny w zbiorze dotyczą. Zanim zaczniemy się rozpisywać musiałbyś dokładniej opisać swoje wymogi.
Go to the top of the page
+Quote Post
athabus
post 11.10.2015, 12:31:14
Post #3





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Tutaj akurat jest to przykład, ale ogólnie chodzi mi o bardzo proste obiekty użytkowe - w tym przypadku będzie to tak na prawdę "obudowanie" tablicy, z warunkami brzegowymi do wyszukiwania - nic skomplikowanego. Po prostu chodzi o wygodę użytkowania takiego filtra, zainicjowanie pewnych domyślnych wartości filtra itp. Będzie on użytkowany wewnątrz aplikacji, bez żadnych zależności zewnętrznych.

Czyli mówisz, że dla takich zwykłych obiektów po prostu nie kombinować z Services itp, inicjować jest standardowo przez new i nie dorabiać większej ideologii?
Go to the top of the page
+Quote Post
Crozin
post 11.10.2015, 18:05:24
Post #4





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

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


Symfony to tylko framework webowy, nie masz co podporządkowywać reszty kodu pod niego. Zresztą i dobrze napisany kod "pod ten framework" będzie działał tak samo dobrze i bez niego. ;-)
Go to the top of the page
+Quote Post

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 - 01:56