Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Refaktoryzacja kontrolerów Symfony. Proszę o wskazówki.
porzeczki
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 15.09.2016
Skąd: Warszawa

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


Chciałbym zabrać się za refaktoryzację projektu (pierwszego i jedynego jaki zrobiłem - praca dyplomowa inż). Robiłem go nie zwracając uwagi na zasady porządnego kodu, bo ich nie znałem, projekt miał wyglądać dobrze w przeglądarce internetowej a nie w IDE. Teraz, gdy naczytałem się stosu książek i best practices głowa pęka i nie potrafię tego natłoku nowych informacji posortować w głowie i wykorzystać.

Jakby komuś się strasznie nudziło to byłbym bardzo wdzięczny za wskazanie głupot w tych kontrolerach i ogólnych wskazówek typu: "takie rzeczy to przenieś i używaj jako usług", " z tego najlepiej zrobić listener", "takie coś nie powinno być w kontrolerze".

Będę wdzięczny za każdą, nawet najbardziej ogólną, nie związaną z tą aplikacją uwagę.

github.com/.../Bundle/Controller/


edit:
chociaż tak sobie wszedłem teraz w pierwszy lepszy kontroler to zacząłem wątpić by komuś chciało się rozkminiać o co tam w ogóle chodzi,a bez zrozumienia o co chodzi chyba nie da się strzelać poradami jak to refaktoryzować.

Ten post edytował porzeczki 28.09.2016, 02:19:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
porzeczki
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 15.09.2016
Skąd: Warszawa

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


a jak odchudzić poniższy kontroler?

  1. /**
  2.   * Formularz danych adresowych klienta.
  3.   *
  4.   * @Route("/zamawiam", name="zamawiam")
  5.   */
  6. public function zamawiamAction(Request $request)
  7. {
  8. $session = $request->getSession();
  9. $em = $this->getDoctrine()->getManager();
  10. $logged = $this->get('security.authorization_checker')
  11. ->isGranted('IS_AUTHENTICATED_FULLY');
  12.  
  13. if(!$session->has('cart')){
  14. throw new \Exception('Koszyk pusty.');
  15. }
  16.  
  17.  
  18. $idlogowanie = $this->getUser()->getId();
  19. $klient= $this->getDoctrine()
  20. ->getRepository('AppBundle:Klient')
  21. ->findOneBy(['idlogowanie' => $idlogowanie]);
  22. // jeśli zalogowany nigdy nie wypełniał formularza dostawy lub jeśli niezalogowany
  23. if (!$klient){$klient = new Klient();}
  24.  
  25.  
  26. $form= $this->createForm(DostawaType::class, $klient, array(
  27. 'attr' => array('class' => 'form_dostawa')));
  28.  
  29. $form->handleRequest($request);
  30.  
  31. if ($form->isValid())
  32. {
  33. //linijka dla zalogowanego użytkownika
  34. if ($logged){$klient->setIdlogowanie($this->getUser());}
  35. //wypełnienie tabeli Zamowienie
  36. $zamowienie = new Zamowienie();
  37. $zamowienie->setIdklient($klient);
  38. $status = $this->getDoctrine()
  39. ->getRepository('AppBundle:Status')
  40. ->find('1');
  41. $zamowienie->setIdstatus($status);
  42. $zamowienie->setDatazlozeniacurrent();
  43. //wypełnienie tabeli Zamowienie_Produkt
  44. $cart = $session->get('cart');
  45. foreach ($cart as $isbn => $quantity)
  46. {
  47. $ksiazka = $this->getDoctrine()
  48. ->getRepository('AppBundle:Ksiazka')
  49. ->find($isbn);
  50. $isbn=$ksiazka->getIsbn();
  51. $tytul=$ksiazka->getTytul();
  52. $autor=$ksiazka->getAutor();
  53. $cena=$ksiazka->getCena();
  54. $rokwydania=$ksiazka->getRokwydania();
  55. $ilosc=$quantity;
  56. $zamowienieProdukt = new ZamowienieProdukt();
  57. $zamowienieProdukt->setIdzamowienie($zamowienie);
  58. $zamowienieProdukt->setIsbn($ksiazka);
  59. $zamowienieProdukt->setTytul($tytul);
  60. $zamowienieProdukt->setAutor($autor);
  61. $zamowienieProdukt->setCenaproduktu($cena);
  62. $zamowienieProdukt->setRokwydania($rokwydania);
  63. $zamowienieProdukt->setIlosc($ilosc);
  64. $em->persist($zamowienieProdukt);
  65. }
  66.  
  67. $em->persist($klient);
  68. $em->persist($zamowienie);
  69. $em->flush();
  70.  
  71. $idzamowienia=$zamowienie->getIdzamowienie();
  72. $request->getSession()->getFlashBag()->add(
  73. 'idzamowienie',
  74. $idzamowienia);
  75. return $this->redirect($this->generateUrl('potwierdzenie')
  76. );
  77. }
  78.  
  79.  
  80. return $this->render('AppBundle:Cart:zamawiam.html.twig',[
  81. 'form' => $form->createView()
  82. ]);
  83.  
  84. }
  85.  

czy listenerów i usług ładnie jest używać do kodu jednokrotnego użytku byle odchudzić kontroler? Np gdybym chciał wepchnąć cały kod z powyższego if($form->isValid()){ do listenera/usługi.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 18:27