{"id":21557035,"url":"https://github.com/koddn/php-router","last_synced_at":"2025-04-10T10:23:35.610Z","repository":{"id":46584900,"uuid":"372019866","full_name":"koddn/php-router","owner":"koddn","description":"Koddn Php router is php class that can easily handle routes in a PHP application, supports multiple callbacks, redirects and send responses to client in JSON.","archived":false,"fork":false,"pushed_at":"2021-07-03T08:27:11.000Z","size":12,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T09:11:36.521Z","etag":null,"topics":["express-router-php","fast-routing","koddn","node-router-php","php","php-api-router","php-api-routes","php-api-s","php-cms-router","php-library","php-router","php-router-standalone","php-routing","php7","phprouter","redirect","redirect-urls","router","routers"],"latest_commit_sha":null,"homepage":"https://koddn.com/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/koddn.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-29T16:25:03.000Z","updated_at":"2023-07-29T02:04:23.000Z","dependencies_parsed_at":"2022-08-21T12:40:35.297Z","dependency_job_id":null,"html_url":"https://github.com/koddn/php-router","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koddn%2Fphp-router","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koddn%2Fphp-router/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koddn%2Fphp-router/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koddn%2Fphp-router/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koddn","download_url":"https://codeload.github.com/koddn/php-router/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248199086,"owners_count":21063641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["express-router-php","fast-routing","koddn","node-router-php","php","php-api-router","php-api-routes","php-api-s","php-cms-router","php-library","php-router","php-router-standalone","php-routing","php7","phprouter","redirect","redirect-urls","router","routers"],"created_at":"2024-11-24T08:10:43.981Z","updated_at":"2025-04-10T10:23:35.585Z","avatar_url":"https://github.com/koddn.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Koddn PHP Router\n\nKoddn Php router is php class that can easily handle routes in a PHP application, supports multiple callbacks, redirects and send responses to client in JSON.\n\nWebsite: [Koddn Technologies](https://koddn.com)\n\nLink to Docs: [Koddn Php Router](https://koddn.com/php-router)\n\nSocial Media Koddn:\n[Facebook](https://www.facebook.com/koddn/), [Twitter](https://twitter.com/koddn), [Instagram](https://www.instagram.com/koddn.technologies/)\n\nSocial Media Developer:\n[Facebook](https://www.facebook.com/HarpalSingh11/), [Twitter](https://twitter.com/Harpalsingh_11), [Instagram](https://www.instagram.com/harpal.singh11/)\n\n# Features\n\n* Manages Routing, get, post, put, delete, any - others\n* Redirect pages\n* Multiple callbacks\n* Next function\n* Matches paters\n* Send Responses, JSON, TEXT\n* Set header status\n* Express like router in PHP\n* Fast route in PHP\n* Can be used as Auth Validator\n\n# Install\n\nTo install with composer:\n\n```cli\ncomposer require koddn/php-router\n```\n\n# Usage\n\nGet the Koddn Php Router\n\n```php\n// composer auto loader\nrequire __DIR__ . '/vendor/autoload.php';\n\nuse KODDN\\ROUTER;\n\n// match get request\nROUTER::get('/',function($req,$res,$next){\n    // ..do something \n    $res-\u003esend(\"Welcome to Koddn Php Router\");\n});\n\n```\n\n## Usage - method 2\n\nSimply add src/KODDN_ROUTER.php file in your project;\n\n```php\n// composer auto loader\nrequire __DIR__ . '/src/KODDN_ROUTER.php';\n\n// match get request\nROUTER::get('/',function($req,$res,$next){\n    // ..do something \n    $res-\u003esend(\"Thanks\");\n});\n\n```\n\n## Patterns\n\nYou can use patterns to match the request\n\n* :paramName =\u003e named URL segments that are used to capture the values specified at their position in the URL, begin\n  with colon\n*\n    * =\u003e will capture anything\n\nIn the below example we are capturing user id from the url\n\n```php\n// URL =\u003e /api/user/111\n\nROUTER::get('/api/user/:id',function($req,$res){\n    \n    $id=$req['params']['id'];\n    // $req['params]=\u003e['id'='111']\n    \n});\n```\n\nIn the example we are capturing using\n\n```php\n// URL =\u003e /flight/india-usa\n\nROUTER::get('/flight/:from-:to',function($req,$res){\n    \n    // $req['params]=['from'=\u003e'india','to'=\u003e'usa'];\n    $from =$req['params']['from'];\n    $to = $req['params']['to'];\n   \n});\n```\n\n```php\n// URL =\u003e /post-name-apc/123\nROUTER::get('/*/:postID',function($req,$res){\n    \n    // $req['params']=['postID'=\u003e'123'];\n    $postID =$req['params']['postID'];\n    // do something\n   \n});\n```\n\n# Route Handlers\n\nWe can use multiple callback functions to handle the route\n\n```php\nROUTER::get('/some-url', function($req,$res,$next){\n\n    // Do something here\n    echo \"START\" ;\n    \n    // call Next Callback, control goes to next callback function\n    $next();\n    \n},function($req,$res){\n\n   \n    echo \"END\";  // task completed\n    \n});\n```\n\nAlso, if we want the edited request to be referenced in next callback then use \u0026$req as request parameter\n\n```php\nROUTER::get('/dashboard', function(\u0026$req,$res,$next){\n\n    // if user authorized\n    $req['userID']= \"someUserID\";\n    \n    $next();\n    \n},function(\u0026$req){\n\n   \n   // now you can have use the req.userID here as well\n    \n});\n\n```\n\n# Middleware \nSample how we can use it as middleware for authentication\n\nMiddlewares can be implemented using \"use\" method\n\n```php\nROUTER::use('/user',function($req,$res,$next){\n   \n             ROUTER::get('/me', function ($req, $res, $next) {\n                           \n            // do something here\n                        });\n        });\n\n\n\n// OR\nROUTER::use('/user',function($req,$res,$next){\n   \n        require __DIR__.\"/routes/user.php\"; //\n});\n\n```\n\n\n\n```php\nROUTER::post('/login', function(\u0026$req,$res,$next){\n\n    // do the authorize stuff here\n    if(!authorize){\n    $res-\u003esend(\"invalid\");\n    }\n    $next();\n    \n},function(\u0026$req,$res){\n\n   \n   // do something if authorized\n  // grantAccessToSomething\n    \n});\n\n```\n\n# Redirect\n\n```php\n//ROUTER::redirect('/url-to-match', callbackBeforeRedirect, 'redirect to url', $replaceHeaders=false (optional), $redirectCode =301 (optional));\nROUTER::redirect('/url-to-match', function(){/*do some logs*/}, '/new-url', $replaceHeaders =false/*( boolean optional)*/, $redirectCode=301 /*(int optional)*/);\n```\n\n# Responses\n\nWith Koddn PHP router either you can manually handle responses, or you can use the built-in ones.\n\n```php\nROUTER::post('/about', function($req,$res,$next){\n $res-\u003esend(\"About us\");\n});\n```\n\n## Send JSON data\n\n```php\nROUTER::post('/api/user', function($req,$res,$next){\n    $userData=['name'=\u003e\"Harpal Singh\", 'id'=\u003e11];\n     $res-\u003ejson($userData);\n});\n```\n\n## Set Header Status Codes\n\n```php\nROUTER::post('/api/user', function($req,$res,$next){\n  \n     $res-\u003esetStatus(404)-\u003esend('Not Found');\n});\n```\n\n### Clear cookies\n\n```php\nROUTER::post('/api/user', function($req,$res,$next){\n     // clear all cookies\n     $res-\u003eclearCookies();\n     \n     // clear specific cookies\n     $res-\u003eclearCookies('nameOfCookie');\n     \n     // do something\n     \n});\n```\n\n### Clear cookies\n\n```php\nROUTER::post('/api/user', function($req,$res,$next){\n    // clear Sessions\n     $res-\u003eclearSession();\n     \n     // do something\n     \n});\n```\n\n### End request\n\nIt is similar to die();\n\n```php\nROUTER::post('/api/user', function($req,$res,$next){\n    // clear Sessions\n     $res-\u003eend();\n      // do something\n     \n});\n```\n\n### Redirect using Response\n\n```php\n//ROUTER::redirect('redirect to url', $replaceHeaders=false (optional), $redirectCode =301 (optional));\nROUTER::post('/api/user', function($req,$res,$next){\n    // clear Sessions\n     $res-\u003eredirect('/new-url',$replaceHeaders=false /*(optional)*/, $redirectCode =301  /*(optional)*/);\n      // do something\n     \n});\n```\n\n# ALL Functions\n\n```php\nROUTER::any('/url-to-match',function(\u0026$req,$res,$next){}/*, function(\u0026$req,$res,$next){}*/);\nROUTER::post('/url-to-match',function(\u0026$req,$res,$next){}/*, function(\u0026$req,$res,$next){}*/);\nROUTER::get('/url-to-match',function(\u0026$req,$res,$next){}/*, function(\u0026$req,$res,$next){}*/);\nROUTER::put('/url-to-match',function(\u0026$req,$res,$next){}/*, function(\u0026$req,$res,$next){}*/);\nROUTER::delete('/url-to-match',function(\u0026$req,$res,$next){}/*, function(\u0026$req,$res,$next){}*/);\nROUTER::redirect('/url-to-match', function(){/*do some logs*/}, '/new-url', $replaceHeaders =false/*( boolean optional)*/, $redirectCode=301 /*(int optional)*/);\n```\n\n```php\n\nROUTER::post('/url-to-match',function(\u0026$req,$res,$next){\n//\n//$req = ['$fullUrl' =\u003e $fullUrl, 'url' =\u003e $url, 'path' =\u003e $path, 'params' =\u003e $params, 'rPath' =\u003e $rPath];\n\n});\n```\n\n```php\nROUTER::post('/url-to-match',function(\u0026$req,$res,$next){\n//send\n$res-\u003esend('Some Text');\n//json\n$res-\u003ejson(['id'=\u003e11,'name'=\u003e'Harpal Singh']);\n//redirect using response\n$res-\u003eredirect('/new-url',$replaceHeaders=false /*(optional)*/, $redirectCode =301  /*(optional)*/);\n// Exit\n$res-\u003eend();\n// clear all cookies\n$res-\u003eclearCookies();\n// clear specific cookies\n$res-\u003eclearCookies();\n//set Status\n$res-\u003esetStatus(404)-\u003esend('Not Found');\n});\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoddn%2Fphp-router","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoddn%2Fphp-router","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoddn%2Fphp-router/lists"}