Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Poprawność MVC
Ubermade
post 3.09.2018, 18:42:02
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 30.11.2017
Skąd: Leszno, Poland

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


Witam! Napisałem ostatnio wzorzec MVC w php i mam pewną obawę, że ciut źle zacząłem go używać. Może pokażę na przykładzie.

Mam tutaj funkcję w kontrolerze, która odpowiada za dodawanie kategorii:

  1. public function add(){
  2. Access::logged();
  3. $view = new \Ubermade\view\CategoryView();
  4. if(empty($_POST)){
  5. $view->renderHTML('add', 'front/category/');
  6. }else{
  7. $model = new \Ubermade\model\CategoryModel();
  8. $utilities = new \Ubermade\utilities\CategoryUtilities();
  9. $items = $utilities->add($_POST['name'], $model->getByName($_POST['name']));
  10. if($items){
  11. $model->add($_POST);
  12. RouterUtilities::redirect(RouterUtilities::generateUrl('category/list'));
  13. }else{
  14. $view->renderHTML('add', 'front/category/');
  15. }
  16. }
  17. }


W swoim projekcie zastosowałem pewnego rodzaju "pomocników", którzy zajmują się przetwarzaniem, oraz uwierzytelnianiem podanych informacji. W tym przypadku odnoszę się do klasy "CategoryUtilities" do funkcji"add", która wygląda następująco:

  1. public function add($name, $database){
  2. $check = true;
  3.  
  4. if($database){
  5. $check = false;
  6. Session::set('e_category_repeat', true);
  7. }
  8. if(strlen($name) < 1){
  9. $check = false;
  10. Session::set('e_category_length', true);
  11. }
  12.  
  13. iF($check){
  14. return true;
  15. }else{
  16. return false;
  17. }
  18. }


I tutaj się rodzi pytanie... Czy używanie takich "pomocników" jest zgodny ze wzorcem MVC, czy jednak taki kod powinno się pakować gdzie indziej, np modelu.
Jeżeli chodzi o nazwę "items" w kontrolerze, mimo, że może mieć ona jedynie wartość 1, to czasami, np: w dodawaniu użytkownika, mój "pomocnik" hashuje hasło, zwraca je do kontrolera, który później przesyła je modelu i do bazy danych.

Z góry dziękuję za pomoc smile.gif
Go to the top of the page
+Quote Post
athabus
post 3.09.2018, 20:52:00
Post #2





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

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


Jesli to ma byc podstawa takiego miniframeworka mvc to wielu rzeczy mi tu brakuje typu obiekty request/response itd. Tacy "pomocnicy" sa ok, ale strasznie wszystko mieszasz w klasach - wyglada to troche jak programowanie strukturalne przeniesione do obiektow.
Robilem ostatnio podobne zadanie "szkoleniowe" - jak chcesz to moge Ci na pw pokazac jak.taki framework mvc strony moglby wygladac.
Go to the top of the page
+Quote Post
Ubermade
post 3.09.2018, 21:01:29
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 30.11.2017
Skąd: Leszno, Poland

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


Cytat(athabus @ 3.09.2018, 21:52:00 ) *
Jesli to ma byc podstawa takiego miniframeworka mvc to wielu rzeczy mi tu brakuje typu obiekty request/response itd. Tacy "pomocnicy" sa ok, ale strasznie wszystko mieszasz w klasach - wyglada to troche jak programowanie strukturalne przeniesione do obiektow.
Robilem ostatnio podobne zadanie "szkoleniowe" - jak chcesz to moge Ci na pw pokazac jak.taki framework mvc strony moglby wygladac.

Jasne, fajnie by było wink.gif
Go to the top of the page
+Quote Post
athabus
post 3.09.2018, 21:08:33
Post #4





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

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


Ok to postaram sie jutro po pracy podeslac. Napisz mi tylkoczy ogarniasz takie rzeczy jak git, composer, doctrine, kontener di - bo mam wersje basic i taka bardziej oop po refactoringu z moim przelozonym. Wersja poczatkowa jest taka "poprawna ale prosta jak kij od szczotki", koncowa bardziej oop. Nawet ta poczatkowa mysle ze by Ci pozwolila troche poprawic kod, ale koncowa to juz calkiem fajny kod oop przynajmniej jak na moj obecny poziom, tyle ze juz bardziej zlozona.
Go to the top of the page
+Quote Post
nospor
post 4.09.2018, 09:44:46
Post #5





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Z pierd, ale z takich pierd co ladnie ci poprawia kod to

nie:
  1. iF($check){
  2. return true;
  3. }else{
  4. return false;
  5. }


a poprostu:
  1. return $check;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
athabus
post 4.09.2018, 13:08:57
Post #6





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

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


Haha mój popisowy numer. Na pierwszym code review potrzebowałem minuty, żeby odpowiedzieć na pytanie co tu jest nie tak smile.gif
Go to the top of the page
+Quote Post
Ubermade
post 4.09.2018, 17:15:12
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 30.11.2017
Skąd: Leszno, Poland

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


jest to jedynie napisany na szybko przykład wink.gif Bardzo często zwracam wartości takie jak zahashowane hasło itp wink.gif Ale sam fakt, taka pierdoła poprawiłaby kod wink.gif

Cytat(athabus @ 3.09.2018, 22:08:33 ) *
Ok to postaram sie jutro po pracy podeslac. Napisz mi tylkoczy ogarniasz takie rzeczy jak git, composer, doctrine, kontener di - bo mam wersje basic i taka bardziej oop po refactoringu z moim przelozonym. Wersja poczatkowa jest taka "poprawna ale prosta jak kij od szczotki", koncowa bardziej oop. Nawet ta poczatkowa mysle ze by Ci pozwolila troche poprawic kod, ale koncowa to juz calkiem fajny kod oop przynajmniej jak na moj obecny poziom, tyle ze juz bardziej zlozona.

Cóż, ogarniam takie rzeczy, jak git i composer, ale co do reszty to tylko słyszałem o nich biggrin.gif
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: 18.04.2024 - 14:11