Php Library Router
A flexible router with multiple options, (*1)
Introduction
Unlike other routes, this router supports also database driven routes, (*2)
Features
- Retrieve routes from database, or specify programatically
- Parametrized routes
- Middleware
Installation (est. 1 min)
composer require sinevia/php-library-router
Word of warning. Do use a stable package, as "dev-master" is a work in progress., (*3)
Create the database table:, (*4)
$router = (new Plugins/Router);
$router->setDatabase($db);
$router->install();
Alternatively create the table manually with the following structure (default table name is snv_actions_action):, (*5)
Id - integer
Status - string / enum (Active|Inactive)
ActionName - string
Middleware - string
Response - string
Memo - text
CreatedAt - datetime
UpdatedAt - datetime
DeletedAt - datetime, (*6)
Uninstall (est. 1 min)
Removal of the package is a breeze:, (*7)
composer require sinevia/php-library-router
Optionally, delete the route tables (the default table is snv_actions_action), (*8)
Configuration
$db = new Sinevia\SqlDb(your_database_options);
die((new Plugins\Router())->setDatabase($db)->run()));, (*9)
Example Routes
Id |
Status |
ActionName |
Middleware |
Response |
Memo |
1 |
Active |
/ |
home |
will excute the function home() |
2 |
Inactive |
/hello/:string |
verifyUser,setLastLogin |
hello |
will excute the middleware functions verifyUser then setLastLogin then call the function hello($name) |
3 |
Active |
/admin |
App\Admin@dashboard |
will excute the method dashboard from class Admin in namespace App |
Human Friendly Action Names
The following shortcuts can be used to create human friendly routes (actions):, (*10)
Shortcut |
Regex |
:any |
([^/]+) |
:num |
([0-9]+) |
:all |
(.*) |
:string |
([a-zA-Z]+) |
:number |
([0-9]+) |
:numeric |
([0-9-.]+) |
:alpha' |
([a-zA-Z0-9-_]+) |
Example action name: /article/:num/:string, (*11)