1. Go to this page and download the library: Download yiisoft/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/ */
yiisoft / router example snippets
use Yiisoft\Router\CurrentRoute;
use Yiisoft\Router\Group;
use Yiisoft\Router\Route\Get;
use Yiisoft\Router\RouteCollection;
use Yiisoft\Router\RouteCollectorInterface;
use Yiisoft\Router\UrlMatcherInterface;
use Yiisoft\Router\Fastroute\UrlMatcher;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
// Define routes
$routes = [
new Get(
pattern: '/',
action: static function (ServerRequestInterface $request, RequestHandlerInterface $next) use ($responseFactory) {
$response = $responseFactory->createResponse();
$response
->getBody()
->write('You are at homepage.');
return $response;
},
),
new Get(
pattern: '/test/{id:\w+}',
action: static function (CurrentRoute $currentRoute, RequestHandlerInterface $next) use ($responseFactory) {
$id = $currentRoute->getArgument('id');
$response = $responseFactory->createResponse();
$response
->getBody()
->write('You are at test with argument ' . $id);
return $response;
},
),
];
// Add routes defined to route collector
$collector = $container->get(RouteCollectorInterface::class);
$collector->addRoute(...$routes);
// Initialize URL matcher
/** @var UrlMatcherInterface $urlMatcher */
$urlMatcher = new UrlMatcher(new RouteCollection($collector));
// Do the match against $request which is PSR-7 ServerRequestInterface.
$result = $urlMatcher->match($request);
if (!$result->isSuccess()) {
// 404
}
// $result->arguments() contains arguments from the match.
// Run middleware assigned to a route found.
$response = $result->process($request, $notFoundHandler);
$router = $container->get(Yiisoft\Router\UrlMatcherInterface::class);
$responseFactory = $container->get(\Psr\Http\Message\ResponseFactoryInterface::class);
$routerMiddleware = new Yiisoft\Router\Middleware\Router($router, $responseFactory, $container);
// Add middleware to your middleware handler of choice.
use Yiisoft\Http\Method;
use Yiisoft\Router\Route;
use Yiisoft\Router\Route\Delete;
new Delete(
pattern: '/post/{id}',
name: 'post-delete',
action: [PostController::class, 'actionDelete'],
);
new Route(
pattern: '/page/add',
methods: [Method::GET, Method::POST],
name: 'page-add',
action: [PageController::class, 'actionAdd'],
);
use Yiisoft\Router\Route;
enum RouteName: string
{
case PageAdd = 'page-add';
}
Route::methods([Method::GET, Method::POST], '/page/add')
->name(RouteName::PageAdd)
->action([PageController::class, 'actionAdd']);
use Yiisoft\Router\Route\Get;
new Get(
pattern: '/special',
name: 'special',
action: SpecialAction::class,
hosts: ['https://www.yiiframework.com'],
);
use Yiisoft\Router\Route\Get;
new Get(
pattern: '/api[/v{version}]',
name: 'api-index',
action: ApiAction::class,
defaults: ['version' => 1],
);
use Yiisoft\Http\Method;
use Yiisoft\Router\Route;
new Route(
pattern: '/page/add',
methods: [Method::GET, Method::POST],
name: 'blog/add',
action: [PostController::class, 'add'],
middlewares: [Authentication::class, ExtraHeaders::class],
);
use Yiisoft\Router\Route\Get;
new Get(
pattern: '/special',
name: 'special',
action: SpecialAction::class,
override: true,
);
use Yiisoft\Router\Group;
use Yiisoft\Router\Route\Get;
use Yiisoft\Router\RouteCollectorInterface;
// for obtaining router see adapter package of choice readme
$collector = $container->get(RouteCollectorInterface::class);
$collector->addRoute(
new Group(
prefix: '/api',
middlewares: [ApiAuthentication::class],
hosts: ['https://example.com'],
routes: [
new Get('/comments'),
new Group('/posts', routes: [
new Get('/list'),
]),
],
),
);
use Yiisoft\Router\Group;
use \Tuupola\Middleware\CorsMiddleware;
return [
new Group(
prefix: '/api',
corsMiddleware: CorsMiddleware::class,
routes: [
// ...
],
),
];
use Yiisoft\Http\Method;
use Yiisoft\Router\Route\Get;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Yiisoft\Yii\Http\Handler\NotFoundHandler;
use Yiisoft\Yii\Runner\Http\SapiEmitter;
use Yiisoft\Yii\Runner\Http\ServerRequestFactory;
use Yiisoft\Router\CurrentRoute;
use Yiisoft\Router\RouteCollection;
use Yiisoft\Router\RouteCollectorInterface;
use Yiisoft\Router\Fastroute\UrlMatcher;
$request = $container
->get(ServerRequestFactory::class)
->createFromGlobals();
$responseFactory = $container->get(ResponseFactoryInterface::class);
$notFoundHandler = new NotFoundHandler($responseFactory);
$collector = $container->get(RouteCollectorInterface::class);
$collector->addRoute(
new Get(
pattern: '/test/{id:\w+}',
action: static function (CurrentRoute $currentRoute, RequestHandlerInterface $next) use ($responseFactory) {
$id = $currentRoute->getArgument('id');
$response = $responseFactory->createResponse();
$response
->getBody()
->write('You are at test with argument ' . $id);
return $response;
},
name: 'test',
)
);
$router = new UrlMatcher(new RouteCollection($collector));
$route = $router->match($request);
$response = $route->process($request, $notFoundHandler);
$emitter = new SapiEmitter();
$emitter->emit($response, $request->getMethod() === Method::HEAD);
use Yiisoft\Router\UrlGeneratorInterface;
function getUrl(UrlGeneratorInterface $urlGenerator, $parameters = [])
{
return $urlGenerator->generate('test', $parameters);
}
use Yiisoft\Router\UrlGeneratorInterface;
function getUrl(UrlGeneratorInterface $urlGenerator, $parameters = [])
{
return $urlGenerator->generateAbsolute('test', $parameters);
}
use Yiisoft\Router\UrlGeneratorInterface;
function getUrl(UrlGeneratorInterface $urlGenerator, $id)
{
return $urlGenerator->generateFromCurrent(['id' => 42]);
}
use Yiisoft\Router\Route\Post;
$routes = [
new Post(
pattern: '/post/{id:\d+}',
action: [PostController::class, 'actionEdit'],
),
];
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;
use Yiisoft\Router\CurrentRoute;
final class PostController
{
public function actionEdit(CurrentRoute $currentRoute): ResponseInterface
{
$postId = $currentRoute->getArgument('id');
if ($postId === null) {
throw new \InvalidArgumentException('Post ID is not specified.');
}
// ...
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.