1. Go to this page and download the library: Download miladrahimi/phprouter 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/ */
miladrahimi / phprouter example snippets
use MiladRahimi\PhpRouter\Router;
use Laminas\Diactoros\Response\JsonResponse;
$router = Router::create();
$router->get('/', function () {
return new JsonResponse(['message' => 'ok']);
});
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
use MiladRahimi\PhpRouter\View\View
$router = Router::create();
$router->setupView('/../views');
$router->get('/', function (View $view) {
return $view->make('profile', ['user' => 'Jack']);
});
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
$router = Router::create();
$router->get('/', function () { /* ... */ });
$router->post('/', function () { /* ... */ });
$router->put('/', function () { /* ... */ });
$router->patch('/', function () { /* ... */ });
$router->delete('/', function () { /* ... */ });
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
$router = Router::create();
$router->define('GET', '/', function () { /* ... */ });
$router->define('OPTIONS', '/', function () { /* ... */ });
$router->define('CUSTOM', '/', function () { /* ... */ });
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
$router = Router::create();
$router->any('/', function () {
return 'This is Home! No matter what the HTTP method is!';
});
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
$router = Router::create();
$router->get('/', function () {
return 'This is a closure controller!';
});
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
class UsersController
{
function index()
{
return 'Class: UsersController & Method: index';
}
function handle()
{
return 'Class UsersController.';
}
}
$router = Router::create();
// Controller: Class=UsersController Method=index()
$router->get('/method', [UsersController::class, 'index']);
// Controller: Class=UsersController Method=handle()
$router->get('/class', UsersController::class);
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
$router = Router::create();
// Required parameter
$router->get('/post/{id}', function ($id) {
return "The content of post $id";
});
// Optional parameter
$router->get('/welcome/{name?}', function ($name = null) {
return 'Welcome ' . ($name ?: 'Dear User');
});
// Optional parameter, Optional / (Slash)!
$router->get('/profile/?{user?}', function ($user = null) {
return ($user ?: 'Your') . ' profile';
});
// Optional parameter with default value
$router->get('/roles/{role?}', function ($role = 'guest') {
return "Your role is $role";
});
// Multiple parameters
$router->get('/post/{pid}/comment/{cid}', function ($pid, $cid) {
return "The comment $cid of the post $pid";
});
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
$router = Router::create();
// "id" must be numeric
$router->pattern('id', '[0-9]+');
$router->get('/post/{id}', function (int $id) { /* ... */ });
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
use Laminas\Diactoros\ServerRequest;
use Laminas\Diactoros\Response\JsonResponse;
$router = Router::create();
$router->get('/', function (ServerRequest $request) {
$method = $request->getMethod();
$uriPath = $request->getUri()->getPath();
$headers = $request->getHeaders();
$queryParameters = $request->getQueryParams();
$bodyContents = $request->getBody()->getContents();
// ...
});
$router->dispatch();
use Laminas\Diactoros\Response\RedirectResponse;
use MiladRahimi\PhpRouter\Router;
use Laminas\Diactoros\Response\EmptyResponse;
use Laminas\Diactoros\Response\HtmlResponse;
use Laminas\Diactoros\Response\JsonResponse;
use Laminas\Diactoros\Response\TextResponse;
$router = Router::create();
$router->get('/html/1', function () {
return '<html>This is an HTML response</html>';
});
$router->get('/html/2', function () {
return new HtmlResponse('<html>This is also an HTML response</html>', 200);
});
$router->get('/json', function () {
return new JsonResponse(['error' => 'Unauthorized!'], 401);
});
$router->get('/text', function () {
return new TextResponse('This is a plain text...');
});
$router->get('/empty', function () {
return new EmptyResponse(204);
});
$router->get('/redirect', function () {
return new RedirectResponse('https://miladrahimi.com');
});
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
use MiladRahimi\PhpRouter\View\View
$router = Router::create();
// Setup view feature and set the directory of view files
$router->setupView(__DIR__ . '/../views');
$router->get('/profile', function (View $view) {
// It looks for a view with path: __DIR__/../views/profile.phtml
return $view->make('profile', ['user' => 'Jack']);
});
$router->get('/blog/post', function (View $view) {
// It looks for a view with path: __DIR__/../views/blog/post.phtml
return $view->make('blog.post', ['post' => $post]);
});
$router->dispatch();
<h1> echo $title
use MiladRahimi\PhpRouter\Router;
$router = Router::create();
// A group with uri prefix
$router->group(['prefix' => '/admin'], function (Router $router) {
// URI: /admin/setting
$router->get('/setting', function () {
return 'Setting Panel';
});
});
// All of group attributes together!
$attributes = [
'prefix' => '/admin',
'domain' => 'shop.example.com',
'middleware' => [AuthMiddleware::class],
];
$router->group($attributes, function (Router $router) {
// URL: http://shop.example.com/admin/users
// Domain: shop.example.com
// Middleware: AuthMiddleware
$router->get('/users', [UsersController::class, 'index']);
});
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
use Psr\Http\Message\ServerRequestInterface;
use Laminas\Diactoros\Response\JsonResponse;
class AuthMiddleware
{
public function handle(ServerRequestInterface $request, Closure $next)
{
if ($request->getHeader('Authorization')) {
// Call the next middleware/controller
return $next($request);
}
return new JsonResponse(['error' => 'Unauthorized!'], 401);
}
}
$router = Router::create();
// The middleware attribute takes an array of middleware, not a single one!
$router->group(['middleware' => [AuthMiddleware::class]], function(Router $router) {
$router->get('/admin', function () {
return 'Admin API';
});
});
$router->dispatch();
use MiladRahimi\PhpRouter\Router;
$router = Router::create();
// Domain
$router->group(['domain' => 'shop.com'], function(Router $router) {
$router->get('/', function () {
return 'This is shop.com';
});
});
// Subdomain
$router->group(['domain' => 'admin.shop.com'], function(Router $router) {
$router->get('/', function () {
return 'This is admin.shop.com';
});
});
// Subdomain with regex pattern
$router->group(['domain' => '(.*).example.com'], function(Router $router) {
$router->get('/', function () {
return 'This is a subdomain';
});
});
$router->dispatch();