Arsitektur MVC di NexaUI Framework

Pengenalan MVC

Model-View-Controller (MVC) adalah pola arsitektur software yang memisahkan aplikasi menjadi tiga komponen utama: Model, View, dan Controller. NexaUI mengimplementasikan pola MVC dengan beberapa peningkatan modern untuk memaksimalkan maintainability dan testability kode.

Komponen MVC di NexaUI

Model

Model dalam NexaUI merepresentasikan data dan logika bisnis aplikasi. NexaUI memperluas konsep Model tradisional dengan menggabungkan Repository Pattern dan Domain-Driven Design:

  • Entities - Objek domain yang merepresentasikan konsep bisnis
  • Repositories - Bertanggung jawab untuk akses dan manipulasi data
  • Value Objects - Objek immutable yang merepresentasikan konsep domain

Contoh struktur Model:

models/
├── Domain/
│   ├── NexaAuthEntity.php
│   └── NexaUserEntity.php
├── Repositories/
│   ├── NexaAuthRepository.php
│   ├── NexaProductRepository.php
│   └── NexaUserRepository.php
└── Role/
    ├── Control.php
    ├── Package.php
    └── Select.php

View

View dalam NexaUI bertanggung jawab untuk menampilkan data kepada pengguna. NexaUI menggunakan template engine yang powerful dengan fitur:

  • Template inheritance dan layout
  • Component-based rendering
  • Conditional rendering dan loops
  • Template partials dan includes
  • Device-specific views (desktop, tablet, mobile)

Contoh struktur View:

templates/
├── 404.html
├── dashboard/
├── index.html
├── mobile/
├── tablet/
└── theme/

Controller

Controller dalam NexaUI menangani request dari pengguna, berinteraksi dengan Model, dan memilih View yang tepat untuk ditampilkan. Fitur controller di NexaUI:

  • Routing otomatis berdasarkan nama controller dan method
  • Parameter binding dan validasi
  • Middleware support
  • Response handling (JSON, HTML, dll)

Contoh struktur Controller:

controllers/
├── Admin/
│   ├── AccessController.php
│   └── AccountController.php
├── AdminController.php
├── Api/
├── ApiController.php
├── Frontend/
│   ├── AboutController.php
│   └── BlogController.php
└── FrontendController.php

Flow Request di NexaUI

  1. Request masuk diterima oleh entry point (index.php)
  2. NexaBootstrap menginisialisasi framework dan komponen inti
  3. Router menganalisis URL dan menentukan controller dan method yang sesuai
  4. Controller diinstansiasi dan method yang sesuai dipanggil
  5. Controller berinteraksi dengan Model untuk mendapatkan atau memanipulasi data
  6. Controller menyiapkan data untuk View dan memilih template yang sesuai
  7. View di-render dan response dikirimkan ke client

Keunggulan MVC di NexaUI

  • Separation of Concerns - Kode lebih terorganisir dan mudah dipelihara
  • Reusability - Komponen dapat digunakan kembali di berbagai bagian aplikasi
  • Testability - Komponen dapat diuji secara terpisah
  • Parallel Development - Tim dapat bekerja pada komponen yang berbeda secara bersamaan
  • Flexibility - Mudah untuk mengganti atau memodifikasi komponen tertentu