Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF2][SF][Symfony2]Odesparowanie logiki od frameworka
Boshi
post
Post #1





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


Dużo się mówi o odseparowaniu logiki od danego frameworka, tak aby po przeniesieniu do innego wszystko odpaliło bez przepisania wszystkiego.
Może ktoś mi wytłumaczyć na przykładzie, chociażby symfony jak to wykonać? Skoro mamy pisać własny kod niezależny od frameworka to rozumiem, że nie powinno się rozszerzać bazowej klasy kontrolera, co za tym idzie tracimy bezpośrednio metody np do zwracania responsa. Jak takie coś rozwiązać? Inny przykład. W kontrolerze pobieramy dane z bazy(doctrine) po przed dostępne metody, nie mając metod z bazowego kontrola na czym się opierać?

fajnie jak by ktoś rzucił konkretnym przykładek jakiejś aplikacji.

https://zawarstwaabstrakcji.pl/20170130-cqr...rowadzenie-php/

czytałem, ale średnio z tego rozumiem całość i no nie odnosi się to bezpośrednio do pytania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


Przykład z kontrolerem:
Cytat
Skoro mamy pisać własny kod niezależny od frameworka to rozumiem, że nie powinno się rozszerzać bazowej klasy kontrolera, co za tym idzie tracimy bezpośrednio metody np do zwracania response. Jak takie coś rozwiązać?

w symfony istnieje możliwość korzystania z kontrolerów jak z usług i wtedy też tracisz te metody. Response możesz sobie sam utworzyć, metody z bazowego kontrolera jedynie ułatwiają niektóre rzeczy, ale nie są niezastąpione. Podejść do problemu jest conajmniej kilka. Bardzo prosty przykład odseparowania aplikacji od frameworka:
  1. // Twoj kontroler w aplikacji
  2. class UserController
  3. {
  4. public function create($userId, array $data)
  5. {
  6. $user = $this->userRepository->find($userId);
  7. $user->edit($data);
  8.  
  9. return new RedirectResponse(302, '/user/profile/'.$userId);
  10. }
  11. }
  12.  
  13. // Kontroler w symfony
  14. class UserController extends SymfonyController
  15. {
  16. public function createAction($id)
  17. {
  18. $data = $this->request->getPost();
  19.  
  20. $applicationResponse = $this->get('app.user_controller')->create($id, $data);
  21.  
  22. return new SymfonyResponse($applicationResponse->getCode(), [
  23. 'location' => $applicationResponse->getLocation()
  24. ]);
  25. }
  26. }


Zaznaczam, że powyższy przykład jest bardzo prosty.
Do powyższego należy dodać, że aplikacja powinna być w osobnej przestrzeni nazw i najlepiej w innym katalogu tak, aby można było w każdej chwili ją "wyjąć" z projektu. W przypadku symfony może to być katalog src:
src/
src/App/ - tutaj aplikacja
src/Bundle/ - tutaj symfonowe bundle
Nie ma konkretnego, jedynego i słusznego rozwiązania tego problemu.

Ten post edytował lukaskolista 28.02.2017, 11:25:09
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 Aktualny czas: 21.08.2025 - 23:26