Rutare
Sistemul de rutare din Leto este construit în jurul clasei RoutesCollector, care expune metode fluente pentru definirea rutelor.
Definirea rutelor
Rutele se definesc în metoda routes() a clasei aplicației sau a modulelor:
use App\Controllers\HelloController;
use Leto\Routing\RoutesCollector;
class App
{
public function routes(RoutesCollector $route): void
{
$route->get('/', [HelloController::class, 'hello']);
$route->post('/submit', [FormController::class, 'submit']);
$route->put('/update/{id}', [UpdateController::class, 'update']);
$route->delete('/delete/{id}', [DeleteController::class, 'delete']);
}
}Parametri de rută
$route->get('/users/{id}', [UserController::class, 'show']);
$route->get('/posts/{slug}', [PostController::class, 'view']);Middleware
Rutele pot avea middleware atașat:
$route->get('/admin', [AdminController::class, 'dashboard'])
->middleware(AuthMiddleware::class);Interfața middleware:
use Closure;
use Leto\Http\Request;
use Leto\Routing\MiddlewareInterface;
class AuthMiddleware implements MiddlewareInterface
{
public function handle(Request $request, Closure $next): mixed
{
if (!isset($_SESSION['user'])) {
return new Redirect('/login');
}
return $next($request);
}
}Managerul de rute
RoutesManager coordonează încărcarea rutelor din toate modulele aplicației. Fiecare modul își înregistrează rutele prin propria metodă routes().