Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mvc] znowu ogolnie o mvc
Forum PHP.pl > Forum > PHP
Leezard
witam ponownie

Zapoznaje sie ostatnio z Mojavi 2 jako polecanym na forum frameworkiem i w zwiazku z tym mam pare pytan, ale nie koniecznie dotyczacych Mojavi, ale tematu MVC ogolnie
Z tego co zauwazylem Mojavi 2 nie ma czegos takiego jak Modele, tzn trzeba je twrzyc samemu jako osobne klasy i wlaczac osobno, nie ma dziedizczenia z klasy model i metod ktore trza przeciazac. Wiec jesli napisze sobie klase UserModel np tak:

Kod
class UserModel
{
function UserModel(&$db)
{
...
}
function getUserById($id)
{
...
}
function getUsersList()
{
...
}
function modifyUser($user)
{
...
}
function delUser($id)
{
...
}
function addUser($user)
{
...
}
}


to czy to jest teoretycznie poprawna klasa modelu uzytkownika, jesli przyjmuje w konstruktorze jako parametr idetyfikator polaczenia z baza, czy moze polaczenie powinno byc realizowane wewnatrz klasy? Z drugiej strony jednak na forum mojavi spotkalem opinie ze ludzi tworza wlasne filtry ADOdb tworzace im polaczenia przed wykonaniem akcji, czyli w takim przypadku przekazanie polaczenia do konstruktora jest jedyna mozliwoscia, ale nie wiem czy nie lamie to zasady ze interfejs modelu powinien byc niezalezny od zrodla danych, bo jesli bedziemy mieli pliki xml to nie potrzebne bedzie nam polaczenie z baza.

Poza tym mojavi jest tak skonstruowane ze wszytstko musi miec jakas akcje, niezaleznie od tego czy modyfikuje zawartosc zrodla danych czy nie, czyli kazdy widok przechodzi przez jakas akcje. Wiec tera moje pytanie (np co do UserModel), czy w zwiazku z tym poprawne bedzie uzywanie modelu w akcji do zmian w zrodle danych, i uzywanie modelu w widoku do wyciagniecia danych? Czy moze calosc zwiazana z modelem powinienem umiescic w akcji, a dane wyciagniete z modelu przesylac do widoku z uzyciem Requesta?

Prosilbym o jakies wyjasnienia, poniewaz nie wiem jak sie za to zabrac (chociaz obydwie metody podane przeze mnie z pewnoscia beda dzialac), a nie chcialbym zeby potem sie okazalo ze musze calosc modyfikowac, bo zrobilem zle i potem bedzie to w czyms prezszkadzac.
aleksander
powinno być wewnątrz, ponieważ akcja nic nie wie o bazie danych. Ona wie tylko o modelu, a co się dzieje wewnątrz modelu ją już nie obchodzi.

AD2: poprawne smile.gif w modelu masz metody editUser czyli dla akcji logiki, a także getUserById czyli dla akcji widoku.
Leezard
dzieki, aleksander

i wlasnie o to mi chodzilo winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.