PHP Classes

File: index.php

Recommend this page to a friend!
  Classes of Mateo   Simple PHP Router   index.php   Download  
File: index.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Simple PHP Router
Route HTTP requests to callback functions
Author: By
Last change:
Date: 0 years ago
Size: 1,390 bytes
 

Contents

Class file image Download
<?php

use Mateodioev\HttpRouter\exceptions\{HttpNotFoundException, RequestException};
use
Mateodioev\HttpRouter\{Request, Response, Router};

require
__DIR__ . '/vendor/autoload.php';

$conf = new \Mateodioev\StringVars\Config;
$conf->addFormat('uuid', '([0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12})');

$router = new Router($conf);

$router->get('/', function () {
    return
Response::text('Hello world!')
        ->
setHeader('X-message', 'Method GET');
});

$router->post('/', function () {
    return
Response::json(['message' => 'Hello World!'])
        ->
setHeader('X-message', 'Method POST');
});

// Conditional params
$router->get('/page/{all:id}?', function (Request $r) {
    return
Response::text($r->param('id') ?? 'default page');
});

// Mandatory params
$router->get('/usr/{name}', function (Request $r) {
    return
Response::text('Hello ' . $r->param('name'));
});

// Using custom format
$router->get('/user/{uuid:id}', function (Request $r) {
    return
Response::text('Hello user id ' . $r->param('id'));
});
// try: /usr/123e4567-e89b-12d3-a456-426655440000

try {
   
$router->run();
} catch (
HttpNotFoundException $e) {
   
$router->send(Response::text($e->getMessage() ?? 'Not found')->setStatus(404));
} catch (
RequestException $e) {
   
$router->send(Response::text($e->getMessage() ?? 'Server error')->setStatus(500));
}