DLight Docs Components

Thành phần & cách dùng

Trang này tóm tắt các “mảnh ghép” quan trọng của DLight và cách sử dụng nhanh.

1) Routing

Router nằm ở src/Application/Router.php. Bạn thường tạo router trong file route và đăng ký bằng sign() hoặc signApi().

// Web route
$router = new DLight\Application\Router();
$router->sign('GET /', [\App\Controller\HomeController::class, 'home'])
  ->name('home');

Group + middleware + name

DLight\Application\Router::group('/api')
  ->middleware([\App\Middleware\UserAuthencation::class])
  ->namePrefix('api.')
  ->action(function () {
      DLight\Application\Router::signApi('GET /users', [\App\Controller\UserController::class, 'index'])
        ->name('users.index');
  });

Route params

$router->sign('GET /users/{id}', function ($id) {
  return "User id = " . $id;
});

Named route URL

// generate URL from name
echo \DLight\Application\Router::route('home');
echo \DLight\Application\Router::route('users.show', [123]);

2) Controller

Controllers ở app/Controller. Bạn có thể return string/HTML hoặc return view.

namespace App\Controller;
class HomeController {
  public function home() {
    return view('home', ['message' => 'Hello']);
  }
}

3) View

Views đặt ở resource/view. Engine cấu hình trong config/view.php (ví dụ repo đang set twig).

// render trực tiếp (static)
echo \DLight\Application\View::render('home', ['message' => 'Hello']);

// hoặc helper view() (được autoload trong helper files)
return view('home', ['message' => 'Hello']);

4) Session & flash

\DLight\Application\Session::start();
\DLight\Application\Session::flash('success', 'Saved!');
echo \DLight\Application\Session::getFlash('success');

5) Database layer (Builder / Mapper)

DLight có 2 kiểu thao tác DB (tuỳ DB_DESIGN): builder (query builder fluent) và mapper (CRUD theo table/model). Model ứng dụng thường kế thừa app/Model/Model.php.

Query Builder (ví dụ)

// DLight\Application\DB::table(...), hoặc dùng Model proxy (tuỳ cấu hình)
DB::table('users')->where('id', 1)->first();

Mapper CRUD (ví dụ)

$users = new \App\Model\Users();
$all = $users->all();
$one = $users->find(1);

6) Middleware

Middleware có thể chạy trước handler; nếu trả về false thì dừng, nếu trả về giá trị khác null thì router sẽ output ngay.

// ví dụ đăng ký middleware (xem app/Router/web/web.php)
App\Middleware\UserAuthencation::sign();

7) CLI (dli)

File dli là bootstrapper cho CLI: setup report CLI và boot App::bootDli($argv).

php dli

Routes/lệnh CLI đăng ký trong app/Router/command/command.php (tuỳ dự án).

8) Helpers

DLight autoload một số helper files (xem composer.jsonautoload.files), thường cung cấp các hàm như env(), view(), route(), asset(), dump(), dd(), flash()