Wzorzec MVC w XOOPS
XMF Required 4.0.x Native
Nie jesteś pewny, czy to właściwy wzorzec?
See Choosing a Data Access Pattern for guidance on when to use MVC vs simpler patterns.
:::ostrzeżenie[Wyjaśnienie: Architektura XOOPS]
Standard XOOPS 2.5.x używa wzorca Page Controller (również zwanego Transaction Script), nie MVC. Starsze moduły używają index.php z bezpośrednimi include, globalnymi obiektami ($xoopsUser, $xoopsDB) i dostępem do danych opartym na handlerkach.
Aby używać MVC w XOOPS 2.5.x, potrzebujesz XMF Framework, który zapewnia routing i obsługę kontrolera.
XOOPS 4.0 będzie natywnie obsługiwać MVC z middleware’em PSR-15 i właściwym routingiem.
See also: Current XOOPS Architecture :::
Wzorzec Model-View-Controller (MVC) to fundamentalny wzorzec architektoniczny do rozdzielenia obaw w modułach XOOPS. Ten wzorzec dzieli aplikację na trzy wzajemnie powiązane komponenty.
Wyjaśnienie MVC
Dział zatytułowany „Wyjaśnienie MVC”Model reprezentuje dane i logikę biznesową aplikacji. Ono:
- Zarządza trwałością danych
- Implementuje reguły biznesowe
- Waliduje dane
- Komunikuje się z bazą danych
- Jest niezależny od interfejsu użytkownika
Widok jest odpowiedzialny za prezentowanie danych użytkownikowi. Ono:
- Renderuje szablony HTML
- Wyświetla dane modelu
- Obsługuje prezentację interfejsu użytkownika
- Wysyła działania użytkownika do kontrolera
- Powinien zawierać minimalną logikę
Kontroler
Dział zatytułowany „Kontroler”Kontroler obsługuje interakcje użytkownika i koordynuje między Model a Widokiem. Ono:
- Odbiera żądania użytkownika
- Przetwarza dane wejściowe
- Wywołuje metody modelu
- Wybiera odpowiednie widoki
- Zarządza przepływem aplikacji
Implementacja XOOPS
Dział zatytułowany „Implementacja XOOPS”W XOOPS, wzorzec MVC jest implementowany przy użyciu handlerów i szablonów z silnikiem Smarty zapewniającym obsługę szablonów.
Podstawowa struktura modelu
Dział zatytułowany „Podstawowa struktura modelu”<?phpclass UserModel{ private $db;
public function getUserById($id) { // Database query implementation }
public function createUser($data) { // Create user implementation }}?>Implementacja kontrolera
Dział zatytułowany „Implementacja kontrolera”<?phpclass UserController{ private $model;
public function listAction() { $users = $this->model->getAllUsers(); return ['users' => $users]; }}?>Szablon widoku
Dział zatytułowany „Szablon widoku”{foreach from=$users item=user} <div>{$user.username|escape}</div>{/foreach}Najlepsze praktyki
Dział zatytułowany „Najlepsze praktyki”- Trzymaj logikę biznesową w Modelach
- Trzymaj prezentację w Widokach
- Trzymaj routing/koordynację w Kontrolerach
- Nie mieszaj obaw między warstwami
- Waliduj wszystkie dane wejściowe na poziomie Kontrolera
Powiązana dokumentacja
Dział zatytułowany „Powiązana dokumentacja”Zobacz też:
- Repository-Pattern dla zaawansowanego dostępu do danych
- Service-Layer dla abstrakcji logiki biznesowej
- Code-Organization dla struktury projektu
- Testing dla strategii testowania MVC
Tags: #mvc #patterns #architecture #module-development #design-patterns