Zawsze zaskakiwały mnie bardzo różne interpretacje i implementacje wzorca MVC przez programistów PHP. Najczęściej wynikały one z niezrozumienia tego wzorca lub niechęci do zmieniania swoich przyzwyczajeń w programowaniu.
Na stronie Wiki FrameWorka CodeIgniter znalazłem genialnie prostą listę zasad jak stosować wzorzec Model – View – Controller. Dodałem do niej kilka swoich uwag, a wyniki tego można znaleźć poniżej.
Co należy robić:
Widoki(Views):
- 1. Zawierają pętle i prostą logikę opartą na if’ach.
Kontrolery (Controllers):
- 1. Sterują logiką Aplikacji (Co się ma dziać jak użytkownik kliknie coś, albo wypełni formularz itd.)
- 2. Pośredniczą w uzyskiwaniu danych z bazy, a wyświetleniem ich w widoku.
- 3. Przygotowują wszystkie informacje potrzebne do stworzenie widoku.
- 4. Wywoływanie Modeli Bazy Danych do pobrania informacji.
- 5. Obsługa wszystkich błędów i wyjątków.
Modele (Models):
- 1. Obsługują logikę biznesową jeśli jest potrzebna przy wykonywanie zapytań do Bazy danych
- 2. Przechwytuje wszystkie błędy i następnie wysyłają je do kontrolera.
- 3. Testowanie poprawności danych. Jeśli wykorzystujesz ten sam model w kilku aplikacjach, możliwe jest że zapomnisz z weryfikować dane wejściowe w kontrolerze, dlatego pewniej jest, jeśli sprawdzenie następuje w modelu.
NIGDY NIE RÓB TEGO:
Widoki (Views):
- 1.Nigdy nie mają dostępu do bazy danych
- 2. Nigdy nie wykorzystują bardziej skomplikowanych rzeczy niż pętle i warunki typu ‘if’
Kontrolery (Controllers):
- 1. Nigdy nie zawierają kodu html.
- 2. Nigdy nie mają bezpośredniego dostępu do bazy danych
Oryginalne źródło tekstu: http://codeigniter.com/wiki/MVC/
<strong>Co należy robić:</strong>
Widoki(Views):
<ul>
<li>Zawierają pętle i prostą logikę opartą na if’ach.</li>
</ul>
Kontrolery (Controllers):
<ul>
<li>Sterują logiką Aplikacji (Co się ma dziać jak użytkownik kliknie coś, albo wypełni formularz itd.)</li>
<li>Pośredniczą w uzyskiwaniu danych z bazy, a wyświetleniem ich w widoku.</li>
<li>Przygotowują wszystkie informacje potrzebne do stworzenie widoku.</li>
<li>Wywoływanie Modeli Bazy Danych do pobrania informacji.</li>
<li> Obsługa wszystkich błędów i wyjątków.</li>
</ul>
Modele (Models):
<ul>
<li>Obsługują logikę biznesową jeśli jest potrzebna przy wykonywanie zapytań do Bazy danych</li>
<li>Przechwytuje wszystkie błędy i następnie wysyłają je do kontrolera.</li>
<li>Testowanie poprawności danych. Jeśli wykorzystujesz ten sam model w kilku aplikacjach, możliwe jest że zapomnisz z weryfikować dane wejściowe w kontrolerze, dlatego pewniej jest, jeśli sprawdzenie następuje w modelu.</li>
</ul>
<strong>NIGDY NIE RÓB TEGO:</strong>
Widoki (Views):
<ul>
<li>Nigdy nie mają dostępu do bazy danych</li>
<li>Nigdy nie wykorzystują bardziej skomplikowanych rzeczy niż pętle i warunki typu ‘if’</li>
</ul>
Kontrolery (Controllers):
<ul>
<li>Nigdy nie zawierają kodu html.</li>
<li>Nigdy nie mają bezpośredniego dostępu do bazy danych</li>
</ul>
Orginalne źródło:<a title=”http://codeigniter.com/wiki/MVC/” href=”http://codeigniter.com/wiki/MVC/” target=”_blank”> http://codeigniter.com/wiki/MVC/</a>