'nobody knows it (but you got a secret smile;)']); }); // 404 // Resolve friendly urls // --- Route::add('/([0-9a-zA-Z-_]*)', function($a) { Resolve::url([$a]); } ); Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Resolve::url([$a, $b]); } ); Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Resolve::url([$a, $b, $c]); } ); // 4-th level paths belong to products // --- Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c, $d) { Product::fromUrl($d, [$a, $b, $c]); } ); /** URL-format Proposal: * ----------------------------------------------------------------------------- * * Page (almost-static content): * /about/{url} # Route::add('/about/([0-9a-zA-Z-_\/]*)', function($url) { Page::fromUrl($url); }); * * Product: * /{level-1}/{level-2}/{level-3}/{friendly-url}-{id} # Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', # function($category, $subcategory, $group, $label, $id) { # Product::fromID([$$category, $subcategory, $group, $label], $id); # } # ); * * Category * /{category}/[ {subcategory}[ /{group}]] Route::add('/([0-9a-zA-Z-_]*)', function($a) { Category::url([$a]); }; Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Category::url([$a, $b]); }); Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Category::url([$a, $b, $c]); }); * ----------------------------------------------------------------------------- */ /* EXAMPLES (use it for brainsrtorming) * ----------------------------------------------------------------------------- * // Typical Use // --- Route::add('/art', function() { Art::blah(); }); Route::add('/art/db', function() { Art::fromDatabase(); }); Route::add('/art/([0-9]*)', function($id) { Art::getInfo($id); }); // Get-Post route example // --- Route::add('/contact-form', function() { echo '
'; }, 'get'); Route::add('/contact-form', function() { echo 'Hey! The form has been sent: