Przejdź do głównej zawartości

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.

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 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

W XOOPS, wzorzec MVC jest implementowany przy użyciu handlerów i szablonów z silnikiem Smarty zapewniającym obsługę szablonów.

<?php
class UserModel
{
private $db;
public function getUserById($id)
{
// Database query implementation
}
public function createUser($data)
{
// Create user implementation
}
}
?>
<?php
class UserController
{
private $model;
public function listAction()
{
$users = $this->model->getAllUsers();
return ['users' => $users];
}
}
?>
{foreach from=$users item=user}
<div>{$user.username|escape}</div>
{/foreach}
  • 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

Zobacz też:


Tags: #mvc #patterns #architecture #module-development #design-patterns