2012-03-18 21 views
22

Zaczynam od projektu Symfony2. Znam podstawy ramowe, ale mam pytanie: Gdzie jest właściwe miejsce do tworzenia klas pomocniczych, które tworzę dla pomocy lub dla logiki biznesowej?Symfony2 gdzie umieścić niestandardowe klasy pomocników

+2

znasz ze względu na zakończenie ... byłoby miło dla reszty społeczności, jeśli faktycznie przyznasz poprawną odpowiedź na jedną z poniższych odpowiedzi, a następnie określisz, w jaki sposób wdrożyłeś rozwiązanie i czy zadziałało. na koniec dobrze dla ciebie. Tyle, że chodzi o dawanie i branie, a nie tylko przyjmowanie – abbood

Odpowiedz

13

Odpowiedź Maxa jest prawidłowa. Jednak kwestionuję ścieżkę, którą poleca dla twojego kodu.

Poniższe klasy i pliki mają specyficzne emplacements:

serwis kontenerowy Extensions (należą) wstrzykiwanie zależności/

z http://symfony.com/doc/current/cookbook/bundles/best_practices.html

To mówi swoje usługi powinny być umieszczone w folderze o nazwie "DependencyInjection", a nie "Usługi". W całości, należy src/Foo/BarBundle/wstrzykiwanie zależności

mówię to jako ktoś, że gdyby były i właśnie skończył przesuwając je wszystkie do tego ostatniego (!)

+8

Mylisz się, musisz przechowywać rozszerzenia DI w DependencyInjection, a nie same usługi. http://symfony.com/doc/current/best_practices/business-logic.html – PachinSV

+0

Zgadzam się z @PachinSV. Ta strona wyraźnie wspomina o tym: http://symfony.com/doc/current/cookbook/bundles/extension.html –

2

Możesz utworzyć niestandardowe klasy w swoim Pakiecie, takie jak w folderze Pomocnik/.. Jednak, aby użyć tych pomocników w kodzie, musisz zdefiniować te Pomocniki w pliku opisu usługi (np. services.xml) ... Następnie możesz użyć $ container-> get ('your_helper') ->

5

Najlepszym sposobem na utrzymanie logiki biznesowej jest stworzenie usługi do obsługi całej logiki. Tak będzie w:

src/Foo/BarBundle/Service 

i trzeba wezwać serwis w services.yml.

3

Niedawno zrobiłem jakieś małe prace nad istniejący projekt Symfony2. Jak opisał odpowiedź od Tuong Le, tworzę klas pomocników w katalogu części wiązki i nazwa klasy z Helper przyrostkiem Helper czyli klasa pomocnika znajduje się pod adresem:

src/MyBundle/Helper/MyUtilHelper.php 

mogę używać MyUtilHelper klasę w moim zestawie bez zawijania pojemnik usługowy, tj. nie musiałem dzwonić.

$container->get('my_util'); 

Nie wiem, czy istnieje specjalna konfiguracja. w mojej konfiguracji; ktoś już to przygotował i właśnie dodałem nową funkcjonalność.

0

Według oficjalnej dokumentacji - w szczególności - Symfony Best Practices - należy przechowywać swoje usługi w Utils folderu pod src. Wierzę, że jest to poprawna metoda, niezależnie od tego, czy chcesz, czy nie, udostępnić funkcjonalność dostarczaną przez usługi pakietu innym aplikacjom za pośrednictwem Service Container.Ponadto możesz przechowywać klasy pomocnicze w dowolnym miejscu, które uznasz za stosowne. Dotyczące odpowiedzi @Adam Knowles i @PachinSV - nie są całkiem słuszne, ponieważ nie odpowiadają na twoje pytanie - "Gdzie jest właściwe miejsce do tworzenia klas pomocniczych, które tworzę dla pomocy lub dla logiki biznesowej?" lub "Gdzie przechowywać klasy, które chcę zarejestrować i używać za pośrednictwem Service Container" - ale nie gdzie umieścić pakiet Extension class - którego głównym celem jest dostarczenie informacji o konfiguracji, która powinna być automatycznie ładowana ze swojego pakietu do aplikacji Kontener serwisowy podczas procesu rozruchu rozruchu jądra.

Powiązane problemy