Wpis z mikrobloga

Hej, Mirki. Uczę się laravela i nurtuje mnie pewna sprawa, a nie wiem gdzie szukać odpowiedzi, bo nie wiem nawet jak to nazwać.
Mam kilka kontrolerów a nich bardzo podobny do siebie kod. Jedyne czym się różni to modelem do którego się odwołuje oraz nazwą zmiennej.

$zmienna = Model::findOrFail($id)
jakieś operacje na tej zmiennej

Na końcu wrzucam ta zmienną do widoku. Kawałek kodu ciągle się powtarza w kilku kontrolerach, nie wiem czy będzie ich więcej. Ale jeśli to wolałbym to zrobić jakoś szybciej niż kopiować fragment kodu i zmieniać w nim model oraz nazwę zmiennej.

Myślałem, żeby stworzyć kolejny kontroler a w nim metodę, która by to obsługiwała. I mam kilka pytań w sprawie tego.
1. Czy to jest dobre rozwiązanie?
2. Jeśli tak, to jak przemycić nazwę modelu do tego kontrolera? np. $zmienna = KontrollerObslugujacy::moja_akcja($id, Model) ?
3. Jeśli to jest złe rozwiązanie to jak to rozwiązać? Może jest jakiś sposób na rozwiązanie tego, ale nie wiem po jakiej nazwie tego szukać.

#php #laravel #naukaprogramowania
  • 8
@gustav: Ja takie sprawy mam w dziedziczeniu ale nie jest to najlepsza metoda. Z czasem taki bazowy kontroler obrasta za bardzo, do tego pojawiają się wyjątki w obsłudze niektórych kontrolerów co utrudnia sprawę.
Wydaje mi sie że tak jak pisał @slave89 osobna klasa lepsza.
@gustav: Spoko. Najlepiej o takich rzeczach myśleć na etapie projektowania całej aplikacji - potem jak Ci się rozrośnie to może być zgrzyt i niepotrzebnie stracisz czas na refaktoryzacji kodu. Wszystko rozbija się o stworzenie abstrakcyjnej warstwy między controllerem a modelem (bazą). Dane repo odpowiada za wykonywanie operacji na twoim modelu (który jest używany w jakimś controllerze). Jesli jednak potrzeba Ci większej swobody (a kiedyś ona Ci się z pewnością przyda bo