PHP code example of tanahiro2010 / slim-router-dsl
1. Go to this page and download the library: Download tanahiro2010/slim-router-dsl 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/ */
tanahiro2010 / slim-router-dsl example snippets
$routes = new Routes([
Route::group('/api', [
Route::middleware(AuthMiddleware::class, [
Route::get('/users', [UserController::class, 'index']),
Route::get('/users/{id}', [UserController::class, 'show']),
Route::post('/users', [UserController::class, 'create']),
]),
]),
]);
$routes->deploy($app);
$app->group('/api', function (RouteCollectorProxy $group) {
$group->get('/users', [UserController::class, 'index']);
})->add(AuthMiddleware::class);
Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'create']);
Route::put('/users/{id}', [UserController::class, 'update']);
Route::patch('/users/{id}', [UserController::class, 'patch']);
Route::delete('/users/{id}', [UserController::class, 'delete']);
Route::options('/users', [UserController::class, 'options']);
// 任意のHTTP Methodを指定
Route::map(['GET', 'HEAD'], '/resource', ResourceController::class);
// 主要HTTP Methodをまとめて登録
Route::any('/health', HealthController::class);
// HEAD
Route::head('/users', [UserController::class, 'index']);
Route::group('/api', [
Route::get('/users', ...),
Route::group('/v1', [
Route::get('/posts', ...),
]),
]);
// 単一Middleware
Route::middleware(AuthMiddleware::class, [
Route::get('/me', ...),
]);
// 複数Middleware(配列形式)
Route::middleware([AuthMiddleware::class, JsonMiddleware::class], [
Route::get('/me', ...),
]);
// 複数Middleware(ネスト形式)
Route::middleware(AuthMiddleware::class, [
Route::middleware(JsonMiddleware::class, [
Route::get('/me', ...),
]),
]);
Route::get('/me', [UserController::class, 'me'])
->middleware(AuthMiddleware::class)
->name('users.me');
Route::get('/users/{id}', [UserController::class, 'show'])
->name('users.show')
->meta([
'summary' => 'ユーザー取得',
'auth' => true,
'permission' => 'users.read',
]);
// authが必要なRouteだけ抽出
$routes->filter(fn (CompiledRoute $route) => $route->metadata['auth'] ?? false);
echo $routes->dump();
$routes->toArray();
[
[
'methods' => ['GET'],
'path' => '/api/users',
'handler' => [UserController::class, 'index'],
'middleware' => [AuthMiddleware::class],
'name' => null,
'metadata' => [],
],
// ...
];
$routes->findByName('users.show'); // ?CompiledRoute
$routes->filterByMethod('POST'); // CompiledRoute[]
$routes->findByPath('/api/users'); // CompiledRoute[](同一pathに複数methodがあり得るため配列)
$routes->filterByMiddleware(AuthMiddleware::class); // CompiledRoute[]
$routes->validate();
Route::resource('/users', UserController::class);
Route::resource('/users', UserController::class, only: ['index', 'show']);
Route::resource('/users', UserController::class, except: ['delete']);
Route::controller(UserController::class, [
Route::get('/', 'index'),
Route::get('/{id}', 'show'),
Route::post('/', 'create'),
]);
$routes = new Routes([...]);
$routes->deploy($app);
// routes.php
imRouterDsl\Route;
use Tanahiro2010\SlimRouterDsl\Routes;
return new Routes([
Route::get('/', HomeController::class),
// ...
]);
bash
vendor/bin/router-dsl routes --bootstrap=routes.php
vendor/bin/router-dsl routes --bootstrap=routes.php --json
vendor/bin/router-dsl routes --bootstrap=routes.php --method=POST
vendor/bin/router-dsl routes --bootstrap=routes.php --name=users.show
vendor/bin/router-dsl validate --bootstrap=routes.php