Tovább a tartalomhoz

MVC minta XOOPS-ban

XMF szükséges 4.0.x natív

:::megjegyzés[Nem biztos benne, hogy ez a megfelelő minta?] Tekintse meg az Adat-hozzáférési minta kiválasztása című részt, hogy útmutatást kapjon a MVC használatáról az egyszerűbb mintákhoz képest. :::

:::vigyázat [Tisztázat: XOOPS Architecture] A szabványos XOOPS 2.5.x Page Controller mintát használ (más néven Tranzakciós szkriptet), nem pedig MVC-t. A régebbi modulok index.php-t használnak közvetlen belefoglalással, globális objektumokkal ($xoopsUser, $xoopsDB) és kezelő alapú adathozzáféréssel.

A MVC XOOPS 2.5.x verzióban való használatához szükség van a XMF Framework-ra, amely biztosítja az útválasztást és a vezérlők támogatását.

XOOPS 4.0 natívan támogatja a MVC PSR-15 köztes szoftverrel és a megfelelő útválasztással.

Lásd még: Jelenlegi XOOPS architektúra :::

A Model-View-Controller (MVC) minta egy alapvető építészeti minta a XOOPS modulok problémáinak szétválasztására. Ez a minta három, egymással összefüggő összetevőre osztja az alkalmazást.

A Modell az alkalmazás adatait és üzleti logikáját képviseli. Ez:

  • Kezeli az adatok fennmaradását
  • Az üzletszabályzatot végrehajtja
  • Érvényesíti az adatokat
  • Kommunikál az adatbázissal
  • Független a felhasználói felülettől

A Nézet felelős az adatoknak a felhasználó számára történő megjelenítéséért. Ez:

  • HTML sablonokat jelenít meg
  • Modelladatokat jelenít meg
  • Kezeli a felhasználói felület bemutatását
  • Felhasználói műveleteket küld a vezérlőnek
  • Minimális logikát kell tartalmaznia

A Controller kezeli a felhasználói interakciókat, és koordinálja a modell és a nézet között. Ez:

  • Fogadja a felhasználói kéréseket
  • Feldolgozza a bemeneti adatokat
  • Modellmetódusokat hív meg
  • Kiválasztja a megfelelő nézeteket
  • Kezeli az alkalmazás áramlását

A XOOPS-ban a MVC mintát kezelők és sablonok segítségével valósítják meg a Smarty motorral, amely sablontámogatást biztosít.

<?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}
  • Tartsa meg az üzleti logikát a Modellekben
  • Tartsa a prezentációt a Views alkalmazásban
  • Tartsa a routing/coordination-t a vezérlőkben
  • Ne keverje az aggodalmakat a rétegek között
  • Érvényesítse az összes bemenetet a vezérlő szintjén

Lásd még:


Címkék: #mvc #minták #architektúra #modul-fejlesztés #design-minták