1. Go to this page and download the library: Download onnerby/doeroute library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
onnerby / doeroute example snippets
$router = new \Doe\Router(['GET', 'POST']);
$router->path('blog', function($router) {
// This closure is called if the route starts with /blog
$router->path('list', 'GET', function ($router) {
// This is returned when route goes to "/blog/list"
return "List of all posts";
});
$router->path('tags', 'GET', function ($router) {
// This is returned when route goes to "/blog/tags"
return "List of all tags";
});
$router->pathVariable('/^([0-9]+)$/', function ($router, $postId) {
// This is returned when route goes to something like "/blog/1234"
return "Post " . $postId;
});
});
// Find route and output the results
echo $router->route($_SERVER['REQUEST_METHOD'], $_SERVER['DOCUMENT_URI']);
// Main app
$router = new \Doe\Router(['GET', 'POST']);
// Route everything starting with /project to our \Controller_Project::route
$router->path('project', ['Controller_Project', 'route']);
...
class Controller_Project
{
public static function route($router)
{
$controller = new self;
$router->path('list', 'GET', [$controller, 'list'] );
$router->pathVariable('/^([0-9]+)$/', function ($router, $projectId) use ($controller) {
// Any generic method needed for everything
$controller->getProject($projectId);
$router->path('overview', 'GET', [$controller, 'overview'] );
$router->path('save', 'POST', [$controller, 'save'] );
});
// Lets also map the "/project" path to the controllers "list" action
$router->pathEmpty('GET', [$controller, 'list']);
$router->pathNotFound([$controller, 'error']);
}
private function getProject($projectId) { /* Get the project somehow from a database? */ }
public function list($router)
{
// Full path to this route is "/project/list"
return 'List projects';
}
public function overview($router, $projectId)
{
// Full path to this route is "/project/1234/overview"
return 'Project ' . $projectId . ' overview';
}
public function save($router, $projectId)
{
// Full path to this route is "/project/1234/save"
return 'Saved project ' . $projectId;
}
public function error($router)
{
// Anything not found under "/project/xxxxx"
return 'You look lost. How can I help?';
}
}
// In main app
function authorize($router, $verb) {
// Authorize user somehow
if (!($user = getUser())) {
// Returning anything in "before"-filters will interrupt the route.
return 'You do not have access to this area.';
}
}
$router = new \Doe\Router(['GET', 'POST']);
$router->filter('authorize', function($router) {
$router->path('restrictedarea', function ($router) {
return "Warning: Resticted area. Authorized personnel only.";
});
});
...
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.