sutija/php-router

PHP Router for simpler coding.

1.0.0 2020-12-14 23:32 UTC

This package is auto-updated.

Last update: 2024-04-20 20:16:16 UTC


README

Minimum requirement PHP 7.1

Installation:

composer require sutija/php-router

Usage:

Using as callback function:

<?php
$router = \Sutija\Router\Router::getInstance();

$routeArticles = new \Sutija\Router\Route();

$routeArticles
->setRoute('/articles/:alias')
->setAllowedMethods(['GET'])
->setCallback(function() use ($router) {
    // Get alias from route
    $alias = $router->getRouteData()->getData('alias');
    // Do something...
});

$router->addRoute($routeArticles);

$router->resolve();

Using as class:

<?php
class ArticlesController {
    public function resolve() {
        $alias = \Sutija\Router\Router::getInstance()->getRouteData()->getData('alias');
        // Do something...
    }
    
    public function resolveGet() {
        $alias = \Sutija\Router\Router::getInstance()->getRouteData()->getData('alias');
        $otherParam = \Sutija\Router\Router::getInstance()->getRouteData()->getData('other_param');
        // Do something...
    }
}

$router = \Sutija\Router\Router::getInstance();

$routeArticles = new \Sutija\Router\Route();

$routeArticles
->setRoute('/articles/:alias/something/:other_param')
->setAllowedMethods(['GET', 'POST'])
->setCallback(new ArticlesController());

$router->addRoute($routeArticles);

$router->resolve();

In the above example when we do the request with GET method router will try to find resolveGet method in ArticleController and try to execute it. In case that's not found it will try to execute resolve method.

Using as static method:

<?php
class ArticlesController {
    public static function resolveGet() {
        $alias = \Sutija\Router\Router::getInstance()
        ->getRouteData()
        ->getData('alias');
        // Do something...
    }
    
    public static function resolvePost() {
        $alias = \Sutija\Router\Router::getInstance()
        ->getRouteData()
        ->getData('alias');
        // Do something...
    }
}

$router = \Sutija\Router\Router::getInstance();

$routeArticles = new \Sutija\Router\Route();

$routeArticles
->setRoute('/articles/:alias')
->setAllowedMethods(['GET', 'POST'])
->setCallback(ArticlesController::class);

$router->addRoute($routeArticles);

$router->resolve();

In the above example when we do the request with GET method router will try to find static resolveGet method in ArticleController and try to execute it. In case that's not found it will try to execute static resolve method.

To access query params use:

// GET /articles/rainbow/?colors=10&height=20
$queryParams = \Sutija\Router\Router::getInstance()->getRouteData()->getQueryParams();
// [color => 10, height => 20]

echo \Sutija\Router\Router::getInstance()->getRouteData()->getQueryParam('colors');
// 10