Projekt z OOP PHP w ramach nauki, GitHub

0

Witam.

Ostatnio w ramach nauki Gita i programowania obiektowego w php, napisałem sobie taką podstawę frameworka/CMSa (jak zwał tak zwał). Chciałbym prosić o sprawdzenie mojego kodu i konstruktywną krytykę.
Czy taki kod nadaje się do pokazania pracodawcy?

Głównie prosiłbym o sprawdzenie i ewentualne poprawienie mnie z:

  • wyrzucanie/wyłapywanie wyjątków - czy dobrze to robię, może w złym miejscu wyrzucam/wyłapuję ?
  • główny plik index.php który wszystkim kieruje - czy czegoś tam nie powinno być może? Czy prawidłowo zrobiłem wyłapując tam wyjątki przy wywoływaniu akcji kontrolera?
  • routing
  • struktura plików
  • instancje w klasach - czy gdzieś może powinna być instancja a jej nie ma, lub gdzieś nie powinno jej być zdecydowanie?

Wiem, że tu prawie nic nie ma i wielu rzeczy brakuje, ale to tylko w ramach nauki :)

https://github.com/adrianpl20/oop

0

Zajrzałem. Rzuciło się w oczy to, że w models nie masz modeli tylko funkcje z warstwy dostępu do danych. Model powinien reprezentować jakiś obiekt w systemie i posiadać właściwości, ale nie robić zapytań do bazy. Cokolwiek czytałeś o MVC, przeczytaj to jeszcze raz.

0

Czy aby na pewno? Wiele razy czytałem o MVC, na forach również i wszędzie napisane było, że model odpowiada za pobieranie i zapisywanie danych (baza, pliki, itd.) - więc coś nie halo..

0

Czy mógłbyś podać źródło? Jestem ciekawy o co czytałeś.

0

Pierwszy raz widzę takie podejście. PHP to nie tylko dziwny język, ale też dziwne konwencje. Ja widziałem raczej repozytoria (lub DAO) zwracające Model. Sam model to raczej zbiór właściwości i ewentualnie metody pomocnicze. Model też był przekazywany z warstwy biznesowej do warstwy prezentacji (UI). No ale jeżeli tak się pisze MVC w PHP to nie mam uwag.

1
Sarrus napisał(a):

Pierwszy raz widzę takie podejście. PHP to nie tylko dziwny język, ale też dziwne konwencje. Ja widziałem raczej repozytoria (lub DAO) zwracające Model. Sam model to raczej zbiór właściwości i ewentualnie metody pomocnicze. Model też był przekazywany z warstwy biznesowej do warstwy prezentacji (UI).

Mylisz Model z ViewModelem.
Model w MVC odpowiada za modelowanie problemu, który aplikacja rozwiązuje - mogą tam być różne klasy: zarówno encje, jak i serwisy przetwarzające dane oraz repozytoria czy inne DAO.

I to nie ma związku z PHP, MVC jest niezależne od języka programowania, w każdym można ten wzorzec zaimplementować dobrze, i w każdym można go spieprzyć.

1

Zanim zacząłem używać Zenda (ZF2) sam też dziubałem takie mvc-potworki. Autoloading klas, podział na warstwy, do widoków stosowałem Smarty. To było fajne do nauki jako tako. Sporo przy tym się nauczyłem, sam dochodziłem do takich rozwiązań jakie były dostępne we frameworkach (np nazewnictwo metod, układ folderów i setki innych rzeczy). To wychodziło samo z siebie, aż w końcu dopadłem do Yii, a potem do ZF2 i co? Okazało się że one to wszystko już mają i to od dawien dawna i do tego to wszystko działa lepiej/szybciej i jest bardziej developer-friendly. Uwierz mi że pracując w grupie w końcu dochodzi się do takiego momentu że powinno trzymać się standardów (nieważne jakie, byleby były hehe).

Dlatego zachęcam do nauki frameworków, nie trać czasu :) rozkminiając codzienne problemy przy tworzeniu aplikacji zobaczysz że lepiej poznasz techniki programowania, a nawet i wzorce projektowe. W swoim "pierwszym" mvc popularny u mnie był tylko singleton :) teraz korzystam z pełnej gamy obiektowości (interfejsy, fabryki, dziedziczenie, proxy itp itd) a nawet tego czegoś co się nazywa Traits'ami :)

Tak czy siak do boju i ucz się :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1