From 32c2707f7cfec9a4b3c374ed01d118aba6852719 Mon Sep 17 00:00:00 2001 From: William Date: Wed, 26 Mar 2025 17:20:17 +0000 Subject: [PATCH] Update example.php --- example.php | 64 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/example.php b/example.php index 9ff1b0e..4c85556 100644 --- a/example.php +++ b/example.php @@ -4,7 +4,6 @@ use WillySoft\Route as App; // generated by composer, if you are not using composer include // the file in a different manner -// require __DIR__ . '/edit/this/location/file.php'; require __DIR__ . '/../vendor/autoload.php'; //----------------------------------------------------- @@ -12,11 +11,9 @@ require __DIR__ . '/../vendor/autoload.php'; //----------------------------------------------------- // there are shorthands for standard HTTP request methods such as // get|post|put|patch|delete|options + App::get('/', function() { - ?> -

Homepage!

-

Welcome to the homepage

- print('i match on any method you like')); -// "any" is a shorthand allowing all HTTP request methods to pass +// any is a shorthand allowing all HTTP request methods to pass App::any('/example', fn() => print('i match on any method')); //----------------------------------------------------- // Route Parameters //----------------------------------------------------- -// capture segments of the URL_PATH within your route. for example, -// you may need to capture a users ID. parameters are injected into -// route callbacks based on their order. +// capture segments of the request path within your route. for +// example, you may wish to capture a users id. parameters are +// injected into route callbacks based on their order. // a required parameter will only match when a value is supplied App::get('/echo/$text', fn($text) => print($text)); -// optional parameter, only the last parameter can be optional -// or it will throw an exception +// optional parameter; you must supply a default value App::get('/echo_optional/$text?', fn($text = 'You sent nothing') => print($text)); -// crude friends list example +// example showing advanced multiple route parameters App::get('/user/$user_id/friends/$pagination?', function($user_id, $pagination = '0') { - ?> -

Showing friends for user:

-

Current page:

- Showing friends for user: $user_id"); + print("

Current page: $pagination

"); }); //----------------------------------------------------- // Middlewares //----------------------------------------------------- -// middlewares provide a convenient mechanism for inspecting and -// filtering requests. you can imagine them as a series of layers -// that requests must pass through before they hit your application. -// a layer can be used for auth, rate limiting or anything really +// when a route is matched, it runs all middlewares first before +// entering the main route callback. +// +// you can imagine middlewares as a series of layers that the request +// must pass through before entering your application. it can be used +// for example as authentication, rate limiting or anything really + +// this middleware will run on all routes matched after it was added. +// any routes before it will not use this middleware App::use( fn() => print('

Hello all routes!

')); @@ -70,17 +69,32 @@ App::use( // Route Groups //----------------------------------------------------- // group together routes and middlewares. a prefix can be added to -// prefix each route in the group with a given URL_PATH. the group -// will be skipped if the request URL_PATH does not start with the -// one supplied. middlewares defined in here will only run on routes -// matched from within or any child groups +// prefix each route in the group with a given path. the group will +// be skipped if the request path does not start with the one supplied. +// middlewares added in here will only run on routes matched from +// within or any nested groups + App::group('/test', function() { App::use( - fn() => print('

Hello all routes matched within this or any child groups!

')); + fn() => print('

Hello all routes matched within this or any nested groups!

')); // this will be seen as /test/ App::get('/', fn() => print('Testing 123')); + + // you may also define a group without a prefix. this is useful for + // seperating middlewares as middlewares defined within this group + // will not affect any routes outside of it. + App::group(callback: function() { + App::use( + fn() => print('

Sup G

')); + + App::get('/nested', + fn() => print('Whats up my G?')); + }); + + App::get('/sup', + fn() => print('Wheres my Sup G?')); }); // finally, since no route was matched, show a 404 page