Skip to content

Frog-kt/TetoRouting

This branch is 12 commits behind BaguettePHP/TetoRouting:master.

Folders and files

NameName
Last commit message
Last commit date
Sep 17, 2016
Feb 2, 2015
Sep 17, 2016
Feb 15, 2017
Feb 15, 2017
Mar 18, 2018
Mar 18, 2018
Sep 17, 2016
Mar 18, 2018
Sep 17, 2016
Oct 25, 2016
Feb 2, 2015
Sep 17, 2016
Mar 18, 2018
Oct 24, 2015
Mar 18, 2018
Sep 17, 2016

Repository files navigation

Teto Routing - PHP simple router

Join the chat at https://gitter.im/BaguettePHP/simple-routing Package version Build Status Packagist Scrutinizer Code Quality Code Coverage

Simple routing for WebApp

No magic. No reflection. No complex dependency.

Installation

Composer

composer require zonuexe/simple-routing

References

Routing DSL

//    Method      Path           ReturnValue  Param => RegExp     extension (format)
$routing_map = [
    ['GET',      '/',            'index'  ],
    ['GET|POST', '/search',      'search' ],
    ['GET',      '/article/:id', 'article',  ['id' => '/\A(\d+)\z/'], '?ext' => ['', 'txt']],
    ['GET',      '/info',        'feed' ,                             '?ext' => ['rss', 'rdf', 'xml']],
     '#404'       =>             'not_found' // special
];

$router = new \Teto\Routing\Router($routing_map);
$action = $router->match($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);

// Shorthand (but, do not use reverse routing)
$action = \Teto\Routing\Router::dispatch($routing_map, $_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);

Reverse routing

//   Name         Method      Path            ReturnValue  Param => RegExp     extension (file format)
$routing_map = [
    'root'    => ['GET',      '/',            'index'  ],
    'search'  => ['GET|POST', '/search',      'search' ],
    'article' => ['GET',      '/article/:id', 'article',  ['id' => '/\A(\d+)\z/'], '?ext' => ['', 'txt']],
    'info'    => ['GET',      '/info',        'feed' ,                             '?ext' => ['rss', 'rdf', 'xml']],
    '#404'    =>                              'not_found' // special
];

$router = new \Teto\Routing\Router($routing_map);

$router->makePath('root');    //=> '/'
$router->makePath('search');  //=> '/search'
$router->makePath('article', ['id' => 123]);     //=> '/article/123'
$router->makePath('info',    ['?ext' => 'rss']); //=> '/info.rss'

Tips

$re_num_id    = '/\A(\d+)\z/';
$re_user_name = '/\A@([a-z]+)\z/';

$routing_map = [
    'root'    => ['GET', '/',            'index'  ],
    'search'  => ['GET', '/search',      'search' ],
    'article' => ['GET', '/article/:id', 'article',  ['id' => $re_num_id], '?ext' => ['', 'txt']],
    '#404'    =>                         'not_found' // special
];

Related Libraries

You can get these libraries from Packagist.

Copyright

Teto\Routing is licensed under Apache License Version 2.0. See ./LICENSE.

Teto Routing - PHP simple router for WebApp
Copyright (c) 2016 Baguette HQ / USAMI Kenta <[email protected]>

Teto Kasane

I love Teto Kasane. (ja: Teto Kasane official site)

       r /
  __ , --ヽ!-- .、_
 !  `/::::;::::ヽ l
 !二二!::/}::::丿ハニ|
 !ニニ.|:/ ノ/ }::::}コ
 L二lイ  0´ 0 ,':ノコ
 lヽノ/ヘ、 '' ▽_ノイ ソ
  ソ´ /}`ス / ̄ ̄ ̄ ̄/
   .(_:;つ/  0401 / カタカタ
  ̄ ̄ ̄ ̄ ̄\/____/

Packages

No packages published

Languages

  • PHP 95.1%
  • Ruby 4.9%