Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2]Obiekty "pomocnicze" w Symfony
Forum PHP.pl > Forum > PHP > Frameworki
athabus
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?
Crozin
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.
athabus
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?
Crozin
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. ;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.