DLight Docs MVC

MVC trong DLight

DLight không “ép” bạn theo một cấu trúc MVC cứng nhắc, nhưng repo mẫu đã tổ chức sẵn theo MVC: app/Controller (C), app/Model (M), resource/view (V).

Luồng request (tổng quan)

  1. Web server trỏ về public/index.php
  2. DLight load env, session, routes; sau đó DLight\Application\Router::run()
  3. Router match route → chạy middleware → invoke handler (closure hoặc controller method)
  4. Handler trả về HTML/string hoặc trả về view

Ví dụ MVC tối giản

1) Route

// app/Router/web/web.php
$router = new DLight\Application\Router();
$router->sign('GET /users', [\App\Controller\UserController::class, 'index'])
  ->name('users.index');

2) Controller

// app/Controller/UserController.php (minh hoạ)
namespace App\Controller;

use App\Model\Users;

class UserController
{
  public function index()
  {
    $users = (new Users())->all();
    return view('user1/list', ['users' => $users]);
  }
}

3) Model

Model thường extends app/Model/Model.php để nhận DB proxy (mapper/builder tuỳ config).

// app/Model/Users.php (đang có trong repo)
namespace App\Model;
use DLight\Database\Traits\SoftDelete;

class Users extends Model
{
  use SoftDelete;
  protected $table = 'users';
  protected $selectable = ['id','name','email','created_at','updated_at'];
}

4) View

<!-- resource/view/user1/list.php (minh hoạ) -->
<h1>Users</h1>
<ul>
  <?php foreach (($users ?? []) as $u): ?>
    <li><?= htmlspecialchars($u['name'] ?? '', ENT_QUOTES) ?></li>
  <?php endforeach; ?>
</ul>

Nguyên tắc khuyến nghị