Jestem na początku mojego "uczenia się MVC". Zasadniczo nie mam dużych problemów z programowaniem obiektowym, jednak istnieje jeden aspekt techniczny, który wymaga wyjaśnienia. Wygląda na to, że moja teoria nie jest wystarczająco dobra.Sterownik a model - Potrzebuję wyjaśnienia
Obecnie używam KohanaPHP ramy, wersja 3.
przykładowej sytuacji: Mam stronę internetową, gdzie użytkownik może przesłać artykuł.
Więc mam następującą strukturę:
classes/
/controllers/
article.php
/models/
articles.php
tej pory tak dobrze. Nie mam problemów z modelami, które rozszerzają Kohana_Model, ale nie jestem pewien, czy używam prawidłowych modeli, które używają ORM.
Zasadniczo przy używaniu modeli rozszerzających Kohana_Model umieszczam wszystkie operacje logiczne w modelu. Czy powinienem zrobić to samo dla modeli używających ORM? W wielu przykładach w sieci widziałem kontrolerów, którzy wykonywali logiczne operacje na danych wejściowych/danych z bazy danych, co moim zdaniem jest nieprawidłowe.
Załóżmy, że potrzebuję uzyskać kilka wierszy z bazy danych, więc tworzę właściwą metodę w modelu i zwracam obiekt. Myślę, że to prawda, prawda?
Zasadniczo wszystkie operacje na danych wejściowych użytkownika/danych (wybierz z db, wstaw do db, sprawdzanie poprawności) Wstawiam modele. W ten sposób rozumiem wzór projektu MVC. Modele powinny dbać o wszystkie "mechaniczne" operacje, a kontroler jest tylko "pomostem" pomiędzy modelami/widokami i jest "frontowym" silnikiem.
Czy to właściwe podejście?
Wiem, że to może być głupie pytanie dla bardziej zaawansowanych użytkowników, ale chcę się uczyć tylko dobrych praktyk. Jeśli ktokolwiek mógłby dostarczyć pewnych wyjaśnień, będę zachwycony.
To nie jest głupie pytanie. Temat jest po prostu mylący, ponieważ oryginalny [wzór MVC nie pasuje do przetwarzania w aplikacjach internetowych dobrze] (http://stackoverflow.com/questions/1549857/simple-php-mvc-framework/1549970#1549970). Więc nie staraj się znaleźć "poprawnego" podejścia. Często najlepiej jest używać struktury podobnej do PMVC, gdzie model jest tylko nieuświadamianym interfejsem bazy danych. – mario