2017 © Pedro Peláez
 

library router

Router component

image

widi/router

Router component

  • Sunday, May 14, 2017
  • by widi
  • Repository
  • 1 Watchers
  • 1 Stars
  • 29 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 14 Versions
  • 0 % Grown

The README.md

Widi\Components\Router

Change log

2.0.1
+ updated readme and test path, (*1)

2.0.0
+ refactored to use psr7 request interface, (*2)

1.4.1
+ fix readme file list, (*3)

1.4.0
+ added feature get route key path for accessmanagement + remove build route array, (*4)

1.3.1
+ added php version to composer, (*5)

1.3.0
+ added feature to route manually and override uri and method, (*6)

1.2.0
+ fix default routing array + added get request feature, (*7)

1.1.2
+ fixed generated sub route handling + created route add function, (*8)

1.1.1
+ readme updated + added description to package, (*9)

1.1.0
+ added callback function, (*10)

1.0.2
+ fixed package name, (*11)

1.0.1
+ 1st release, (*12)

Code Sample

Array routes

 [
        'route'   => '/404',
        'options' => [
            'method'     => \Widi\Components\Router\Route\Method\Get::class,
            'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
            'controller' => 'ErrorController404',
            'action'     => 'indexAction',
        ],
    ],
    '403'           => [
        'route'   => '/403',
        'options' => [
            'method'     => \Widi\Components\Router\Route\Method\Get::class,
            'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
            'controller' => 'ErrorController403',
            'action'     => 'indexAction',
        ],
    ],
    '500'           => [
        'route'   => '/500',
        'options' => [
            'method'     => \Widi\Components\Router\Route\Method\Get::class,
            'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
            'controller' => 'ErrorController500',
            'action'     => 'indexAction',
        ],
    ],
    'root_route'    => [
        'route'   => '/',
        'options' => [
            'method'     => \Widi\Components\Router\Route\Method\Get::class,
            'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
            'controller' => 'RouteRootController',
            'action'     => 'indexAction',
        ],
    ],
    'post_route'    => [
        'route'   => '/post',
        'options' => [
            'method'     => \Widi\Components\Router\Route\Method\Post::class,
            'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
            'controller' => 'PostController',
            'action'     => 'updateAction',
        ],
    ],
    'my_parameters' => [
        'route'      => '/parameters',
        'parameters' => [
            'key1' => [
                'mandatory'  => true,
                'validators' => [
                    [
                        'class' => \Widi\Components\Router\Route\Validator\NotEmpty::class,
                    ],
                    [
                        'class' => \Widi\Components\Router\Route\Validator\IsString::class,
                    ],
                ],
            ],
            'key2' => [
                'validators' => [
                    [
                        'class'     => \Widi\Components\Router\Route\Validator\RegEx::class,
                        'parameter' => '/^\d{1,3}$/',
                    ],
                ],
            ],
        ],
        'options'    => [
            'method'     => \Widi\Components\Router\Route\Method\Get::class,
            'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
            'controller' => 'ParameterController',
            'action'     => 'listAction',
        ],
    ],
    'top_route'     => [
        'route'      => '/top',
        'options'    => [
            'method'     => \Widi\Components\Router\Route\Method\Get::class,
            'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
            'controller' => 'TopRouteController',
            'action'     => 'topAction',
            'callback'   =>
                function (Route $route) {

                    echo 'callback of ' . $route->getRouteKey() . ' executed';
                },
        ],
        'extra'      => [
            'some_config_settings' => [
                'option' => 'value',
            ],
        ],
        'sub_routes' => [
            'sub_route' => [
                'route'      => '/sub',
                'options'    => [
                    'method'     => \Widi\Components\Router\Route\Method\Get::class,
                    'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
                    'controller' => 'SubController',
                    'action'     => 'subAction',
                ],
                'sub_routes' => [
                    'regex_sub_route' => [
                        'route'      => '/\/\d\d/',
                        'options'    => [
                            'method'     => \Widi\Components\Router\Route\Method\Get::class,
                            'comparator' => \Widi\Components\Router\Route\Comparator\Regex::class,
                            'controller' => 'regexController',
                            'action'     => 'regexAction',
                        ],
                        'sub_routes' => [
                            'last' => [
                                'route'   => '/last',
                                'options' => [
                                    'method'     => \Widi\Components\Router\Route\Method\Get::class,
                                    'comparator' => \Widi\Components\Router\Route\Comparator\Equal::class,
                                    'controller' => 'LastController',
                                    'action'     => 'lastAction',
                                ],
                                'extra'   => [
                                    'myKey' => 'myValue',
                                ],
                            ],

                        ],
                    ],
                ],
            ],
        ],
    ],
];

$routerFactory = new \Widi\Components\Router\RouterFactory();
$router        = $routerFactory->__invoke($routes);

//$router->setCaseSensitive(true);
$router->setEnableRouteCallbacks(true);

$route = $router->route();
if ($router->isRouteNotFound()) {
    $route = $router->route('/404', Get::METHOD_STRING);
}

?>
<!doctype html>
<html>
<body>


Router Demo

route key: "getRouteKey(); ?>"

controller: "getController(); ?>"

action: "getAction(); ?>"

route key path: "getRouteKeyPath(); ?>"

route parameter

<textarea style="width:100%; min-height:200px;">getParameter() ); ?></textarea>

route extra data

<textarea style="width:100%; min-height:200px;">getExtraData() ); ?></textarea> </body> </html>

Files

  • src/Exception
  • src/Exception/NoMethodRequestException.php
  • src/Exception/RequestException.php
  • src/Exception/RequestMethodNotCreatedException.php
  • src/Exception/RouteComparatorNotCreatedException.php
  • src/Exception/RouteNotCreatedException.php
  • src/Exception/RouterException.php
  • src/Exception/ValidatorNotCreatedException.php
  • src/LICENSE
  • src/Request.php
  • src/Route
  • src/Route/Comparator
  • src/Route/Comparator/ComparatorInterface.php
  • src/Route/Comparator/Equal.php
  • src/Route/Comparator/Regex.php
  • src/Route/Method
  • src/Route/Method/AbstractMethod.php
  • src/Route/Method/Delete.php
  • src/Route/Method/Get.php
  • src/Route/Method/MethodInterface.php
  • src/Route/Method/Post.php
  • src/Route/Method/Put.php
  • src/Route/Route.php
  • src/Route/Validator
  • src/Route/Validator/IsInt.php
  • src/Route/Validator/IsString.php
  • src/Route/Validator/NotEmpty.php
  • src/Route/Validator/RegEx.php
  • src/Route/Validator/ValidatorInterface.php
  • src/Router.php
  • src/RouterFactory.php

The Versions

14/05 2017

dev-master

9999999-dev

Router component

  Sources   Download

LGPL-3.0

The Requires

 

The Development Requires

by Dirk Winkhaus

14/05 2017

2.0.2

2.0.2.0

Router component

  Sources   Download

LGPL-3.0

The Requires

 

The Development Requires

by Dirk Winkhaus

06/03 2017

2.0.1

2.0.1.0

Router component

  Sources   Download

LGPL-3.0

The Requires

 

The Development Requires

by Dirk Winkhaus

06/03 2017

2.0.0

2.0.0.0

Router component

  Sources   Download

LGPL-3.0

The Requires

 

The Development Requires

by Dirk Winkhaus

10/10 2016

1.4.1

1.4.1.0

Router component

  Sources   Download

LGPL-3.0

The Requires

  • php ^5.6

 

The Development Requires

by Dirk Winkhaus

10/10 2016

1.4.0

1.4.0.0

Router component

  Sources   Download

LGPL-3.0

The Requires

  • php ^5.6

 

The Development Requires

by Dirk Winkhaus

10/10 2016

1.3.1

1.3.1.0

Router component

  Sources   Download

LGPL-3.0

The Requires

  • php ^5.6

 

The Development Requires

by Dirk Winkhaus

10/10 2016

1.3.0

1.3.0.0

Router component

  Sources   Download

LGPL-3.0

The Development Requires

by Dirk Winkhaus

04/10 2016

1.2.0

1.2.0.0

Router component

  Sources   Download

LGPL-3.0

The Development Requires

by Dirk Winkhaus

04/10 2016

1.1.2

1.1.2.0

Router component

  Sources   Download

LGPL-3.0

The Development Requires

by Dirk Winkhaus

03/10 2016

1.1.1

1.1.1.0

Router component

  Sources   Download

LGPL-3.0

The Development Requires

by Dirk Winkhaus

03/10 2016

1.1.0

1.1.0.0

.

  Sources   Download

LGPL-3.0

The Development Requires

by Dirk Winkhaus

01/10 2016

1.0.2

1.0.2.0

.

  Sources   Download

LGPL-3.0

The Development Requires

by Dirk Winkhaus

01/10 2016

1.0.1

1.0.1.0

.

  Sources   Download

LGPL-3.0

The Development Requires

by Dirk Winkhaus