1. Go to this page and download the library: Download edgvi10/router library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
edgvi10 / router example snippets
DGVI10\Controllers\Router\RouterController;
// Criar instância do router
$router = new RouterController([
"basePath" => "", // Base path da aplicação (ex: "/api" ou "/v1")
"useJson" => true, // Retornar JSON por padrão
"debug" => false, // Modo debug (exibe stack trace)
"logErrors" => true, // Salvar logs de erros
"logPath" => __DIR__ . "/logs/" // Diretório dos logs
]);
// Definir rotas
$router->get('/', function ($req, $res) {
$res->withJson(["message" => "Welcome to the API"]);
});
$router->get('/hello/:name', function ($req, $res, $params) {
$res->withJson([
"message" => "Hello, " . $params['name'] . "!"
]);
});
// Executar o router
$router->run();
// GET
$router->get('/users', function ($req, $res) {
$res->withJson(["users" => []]);
});
// POST
$router->post('/users', function ($req, $res) {
$data = $req->getBody();
$res->withJson(["created" => true, "data" => $data], 201);
});
// PUT
$router->put('/users/:id', function ($req, $res, $params) {
$id = $params['id'];
$data = $req->getBody();
$res->withJson(["updated" => true, "id" => $id]);
});
// PATCH
$router->patch('/users/:id', function ($req, $res, $params) {
$res->withJson(["patched" => true]);
});
// DELETE
$router->delete('/users/:id', function ($req, $res, $params) {
$res->withJson(["deleted" => true]);
});
// OPTIONS (útil para CORS)
$router->options('/users', function ($req, $res) {
$res->setHeader("Allow", "GET, POST, PUT, DELETE, OPTIONS");
$res->withJson(["methods" => ["GET", "POST", "PUT", "DELETE"]]);
});
// Parâmetro simples
$router->get('/users/:id', function ($req, $res, $params) {
$userId = $params['id'];
$res->withJson(["userId" => $userId]);
});
// Múltiplos parâmetros
$router->get('/users/:userId/posts/:postId', function ($req, $res, $params) {
$res->withJson([
"userId" => $params['userId'],
"postId" => $params['postId']
]);
});
// Parâmetro com regex
$router->get('/users/:id([0-9]+)', function ($req, $res, $params) {
// Aceita apenas números
$res->withJson(["userId" => $params['id']]);
});
$router->get('/posts/:slug([a-z0-9-]+)', function ($req, $res, $params) {
// Aceita apenas letras minúsculas, números e hífens
$res->withJson(["slug" => $params['slug']]);
});
use EDGVI10\Controllers\Router\Middlewares;
// Grupo de rotas da API v1
$router->group('/api/v1', function($router) {
$router->get('/users', function ($req, $res) {
$res->withJson(["users" => []]);
});
$router->get('/posts', function ($req, $res) {
$res->withJson(["posts" => []]);
});
}, [Middlewares::cors(), Middlewares::jsonOnly()]);
// Grupo de rotas protegidas
$router->group('/admin', function($router) {
$router->get('/dashboard', function ($req, $res) {
$res->withJson(["message" => "Admin dashboard"]);
});
$router->get('/users', function ($req, $res) {
$res->withJson(["users" => ["admin1", "admin2"]]);
});
}, [Middlewares::auth()]);
// Grupos aninhados
$router->group('/api', function($router) {
$router->group('/v1', function($router) {
$router->get('/test', function ($req, $res) {
$res->withJson(["version" => "v1"]);
});
});
$router->group('/v2', function($router) {
$router->get('/test', function ($req, $res) {
$res->withJson(["version" => "v2"]);
});
});
});
use EDGVI10\Controllers\Router\Middlewares;
// CORS para todas as rotas
$router->addMiddleware(Middlewares::cors());
// Log de todas as requisições
$router->addMiddleware(function($req, $res, $params) {
error_log("Request: " . $req->getMethod() . " " . $req->getRoute());
return true; // continua para próxima rota
});