• home
  • index.php
  • edit user 3
  • foo 5 bar
  • long route example
  • contact form
  • get+post example
  • test.html
  • How to push data to included files
  • PHP Info
  • Non english route: german
  • Non english route: arabic
  • Inject variables to local scope
  • Return instead of echo test
  • Arrow function test (please enable this route first)
  • aTrailingSlashDoesNotMatter
  • aTrailingSlashDoesNotMatter/
  • theCaseDoesNotMatter
  • thecasedoesnotmatter
  • 404 Test
  • 405 Test
  • '; } // Add base route (startpage) Route::add('/', function() { navi(); echo 'Welcome :-)'; }); // Another base route example Route::add('/index.php', function() { navi(); echo 'You are not really on index.php ;-)'; }); // Simple test route that simulates static html file Route::add('/test.html', function() { navi(); echo 'Hello from test.html'; }); // This example shows how to include files and how to push data to them Route::add('/blog/([a-z-0-9-]*)', function($slug) { navi(); include('include-example.php'); }); // This route is for debugging only // It simply prints out some php infos // Do not use this route on production systems! Route::add('/phpinfo', function() { navi(); phpinfo(); }); // Get route example Route::add('/contact-form', function() { navi(); echo '
    '; }, 'get'); // Post route example Route::add('/contact-form', function() { navi(); echo 'Hey! The form has been sent:
    '; print_r($_POST); }, 'post'); // Get and Post route example Route::add('/get-post-sample', function() { navi(); echo 'You can GET this page and also POST this form back to it'; echo '
    '; if (isset($_POST['input'])) { echo 'I also received a POST with this data:
    '; print_r($_POST); } }, ['get','post']); // Route with regexp parameter // Be aware that (.*) will match / (slash) too. For example: /user/foo/bar/edit // Also users could inject SQL statements or other untrusted data if you use (.*) // You should better use a saver expression like /user/([0-9]*)/edit or /user/([A-Za-z]*)/edit Route::add('/user/(.*)/edit', function($id) { navi(); echo 'Edit user with id '.$id.'
    '; }); // Accept only numbers as parameter. Other characters will result in a 404 error Route::add('/foo/([0-9]*)/bar', function($var1) { navi(); echo $var1.' is a great number!'; }); // Crazy route with parameters Route::add('/(.*)/(.*)/(.*)/(.*)', function($var1,$var2,$var3,$var4) { navi(); echo 'This is the first match: '.$var1.' / '.$var2.' / '.$var3.' / '.$var4.'
    '; }); // Long route example // By default this route gets never triggered because the route before matches too Route::add('/foo/bar/foo/bar', function() { echo 'This is the second match (This route should only work in multi match mode)
    '; }); // Route with non english letters: german example Route::add('/äöü', function() { navi(); echo 'German example. Non english letters should work too
    '; }); // Route with non english letters: arabic example Route::add('/الرقص-العربي', function() { navi(); echo 'Arabic example. Non english letters should work too
    '; }); // Use variables from global scope // You can use for example use() to inject variables to local scope // You can use global to register the variable in local scope $foo = 'foo'; $bar = 'bar'; Route::add('/global/([a-z-0-9-]*)', function($param) use($foo) { global $bar; navi(); echo 'The param is '.$param.'
    '; echo 'Foo is '.$foo.'
    '; echo 'Bar is '.$bar.'
    '; }); // Return example // Returned data gets printed Route::add('/return', function() { navi(); return 'This text gets returned by the add method'; }); // Arrow function example // Note: You can use this example only if you are on PHP 7.4 or higher // $bar = 'bar'; // Route::add('/arrow/([a-z-0-9-]*)', fn($foo) => navi().'This is a working arrow function example.
    Parameter: '.$foo. '
    Variable from global scope: '.$bar ); // Trailing slash example Route::add('/aTrailingSlashDoesNotMatter', function() { navi(); echo 'a trailing slash does not matter
    '; }); // Case example Route::add('/theCaseDoesNotMatter',function() { navi(); echo 'the case does not matter
    '; }); // 405 test Route::add('/this-route-is-defined', function() { navi(); echo 'You need to patch this route to see this content'; }, 'patch'); // Add a 404 not found route Route::pathNotFound(function($path) { // Do not forget to send a status header back to the client // The router will not send any headers by default // So you will have the full flexibility to handle this case header('HTTP/1.0 404 Not Found'); navi(); echo 'Error 404 :-(
    '; echo 'The requested path "'.$path.'" was not found!'; }); // Add a 405 method not allowed route Route::methodNotAllowed(function($path, $method) { // Do not forget to send a status header back to the client // The router will not send any headers by default // So you will have the full flexibility to handle this case header('HTTP/1.0 405 Method Not Allowed'); navi(); echo 'Error 405 :-(
    '; echo 'The requested path "'.$path.'" exists. But the request method "'.$method.'" is not allowed on this path!'; }); // Run the Router with the given Basepath Route::run(BASEPATH); // Enable case sensitive mode, trailing slashes and multi match mode by setting the params to true // Route::run(BASEPATH, true, true, true);