Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [laravel][symfony] Laravel, działanie modelu
miccom
post
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Cześć.
Nie rozumiem jednej sprawy i proszę społeczność o nakreślenie co robić (IMG:style_emoticons/default/smile.gif)

Mam problem w zrozumieniu laravela, modeli itp.

Ostatnio analizowałem kurs laravela ( z uprzejmości nie podam adresu kursu (IMG:style_emoticons/default/wink.gif) ) na którym pan jawnie w kontrolerze wykonywał operacje na modelu, coś w deseń poniżej:

  1. namespace App\Http\Controllers;
  2.  
  3. use App\Models\User;
  4. $data = file_get_contents('https://jsonplaceholder.typicode.com/users');
  5. $fullData = json_decode($data, TRUE);
  6. foreach( $fullData AS $singleData ){
  7. $user = new User();
  8. $user->name = $singleData['name'];
  9. $user->username = $singleData['username'];
  10. $user->phone = $singleData['phone'];
  11. $user->website = $singleData['website'];
  12. $user->save();
  13. }


Jako że poszukuję pracy jako junior laravel developer to przygotowałem zadanie testowe zgodnie z tym kursem... ale moi rekruterzy napisali mi, że pomieszałem wszystko w kontrolerze itp.

Pytanie- jak poprawnie używać kontrolera i modelu ? bo nieco zagmatwałem się w tych elementach.

Jak rozumiem, kontroler steruje modelem, model wykonuje operacje ( najczęściej na bazie danych ) i zwraca dane do kontrolera, a ten kontroler dalej przekazuje dane do widoku.
Jak powinienem zmodyfikować $user = new User(); aby poprawnie używać frameworka MVC?

Proszę o pomoc w zrozumieniu tematu (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Szado
post
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 4
Dołączył: 30.05.2017

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


W dokumentacji przedstawiane są uproszczone przykłady zastosowania poszczególnych elementów frameworka, które mają demonstrować koncepty. W życiu codziennym, aplikacje często rozwiązują bardziej złożone problemy które wymagają napisania większej ilości kodu (tak jak w Twoim przypadku). Wtedy aby tworzyć zwięzły, czytelny i zrozumiały kod stosuje się zasady KISS, DRY, SOLID (Google) które narzucają m.in. logiczne wydzielanie jego fragmentów odpowiadających za pojedyncze procesy (np. zamykając je w odseparowanych od siebie serwisach).

Jeśli nie znasz jeszcze tych zasad/nie są one dla Ciebie intuicyjne, sugeruję zastosowanie bardzo prostej zasady która "na oko" powie Ci, czy powinieneś rozważyć refactoring: jeśli kod Twojej funkcji/metody nie mieści się w całości na ekranie (tj. musisz ją przewijać) to znaczy, że należy ją podzielić na kilka metod w ramach klasy lub sprawdzić, czy przypadkiem sama w sobie nie wykonuje zbyt wielu czynności - wtedy można opakować je w oddzielne klasy (serwisy), a w metodzie macierzystej użyć ich wywołań.

Na przykładzie metody kontrolera loadDataToBase() z przesłanego przez Ciebie projektu, można wydzielić:
  • czyszczenie tabel do oddzielnego serwisu,
  • pobieranie danych z API i ich parsowanie do oddzielnego serwisu,
  • tworzenie modeli na podstawie wyników z API do oddzielnego serwisu lub chociażby jako metodę samych modeli (chociaż w przypadku laravelowego active recordu będzie tam bałagan i bez tego),
  • opcjonalnie - sam mechanizm regularnego uruchamiania akcji przerobić można na laravelowe zadanie (Job) i zlecić jego wykonywanie w Console\Kernel np. raz dziennie. Poczytaj w dokumentacji o zadaniach cyklicznych i kolejkach.
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: 7.10.2025 - 03:20