Cytat
No ja to najchętniej w ogóle bym się pozbył albo kontrolera albo modelu smile.gif Nazwałbym to wzorcem VS (View & Something)
Ok, rozumiem, że widzisz sens w posiadaniu widoku:)
Co do podziału na kontroler i model, to chodzi o to, że wyobraź sobie, że masz stronę z formularzem i jej logika wygląda tak:
1) Sprawdzasz czy zostały przesłane dane.
2) Dane zostały przesłane, więc walidujesz.
4) Przeszły walidację, więc zapisujesz do bazy.
5) Nie przeszły, więc zwracasz odpowiednie błędy dla pól
6) Tak, czy inaczej wyświetlasz komunikat.
7) Tak czy inaczej wyświetlasz formularz
8) Może wyświetlasz jeszcze jakiś tekst, który jest pobierany z bazy?
9) Może dane nt. uzytkownika, które są trzymane w sesji
I teraz implementacja z kontrolerem i modelami wygląda mniej więcej tak ($this = kontroler):
if ($this->dataWasSent())
{
$validator = new Validtor();
if($validator->isValid($this->getData()))
{
$dataModel = new DataModel();
$dataModel->setData($this->getData());
$dataModel->save();
}
else
{
$this->view->errors = $validator->getErrors();
}
}
$this->view->form = new Form($this->getData());
Jeszcze jak dorzucisz do tego bloki try-catch, bo np przy savie może wystąpić exception, to już ci się kod rozrasta.
Cała logika natomiast, czyli wygląd DataModel i zapisywanie, walidacja i cały jej proces, tworzenie formularza, przerzucasz na modele.
A teraz spróbuj to zrobić bez modeli:) Ile więcej kodu i o ile mniej przejrzysty?
O to chodzi w programowaniu obiektowym, żeby nie mieszać logiki obiektów, więc np model danych nie powinien posiadać walidatora i formularza do wyświetlenia, Form powinien tworzyć formularz i go wyświetlać i tyle. Żadnej dodatkowej funkcjonalności, która nie jest powiązana z logiką, bo później będziesz miał coś takiego, że zrobisz new Form() i okaże się, że została wykonana operacja pobierania danych z bazy, ich filtrowanie i walidacja. Czy to ma sens?
Cytat
Zbiór bibliotek to "jedynie" framework, który mniej lub bardziej może na jakimś wzorcu czy ideologii bazować.
Framework, to nie jest zbiór bibliotek. Zbiór bibliotek to po prostu większa biblioteka:) Framework jest narzędziem do wspierania tworzenia aplikacji i z założenia wymusza pewną architekturę, musi również posiadać jakieś jądro oraz dostarczać klasy (lub inną implementację) ustawiania środowiska frameworka.
Cytat
od niedawna przecież PHP weszło, żebym mógł powiedzieć"w szerszy świat obiektówki"
No trzeba się zgodzić, że w PHPie nadal nie ma wielu rzeczy, które by się przydały, ale uważam, że w PHPie nie da się programować w pełni obiektowo. Da się, tylko trzeba unikać pewnych możliwych rozwiązań i radzić sobie bez niektórych niezaimplementowanych:(