Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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.

Notifications You must be signed in to change notification settings

koddn/php-router

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

2 Commits

Repository files navigation

Koddn PHP Router

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.

Website: Koddn Technologies

Link to Docs: Koddn Php Router

Social Media Koddn: Facebook, Twitter, Instagram

Social Media Developer: Facebook, Twitter, Instagram

Features

  • Manages Routing, get, post, put, delete, any - others
  • Redirect pages
  • Multiple callbacks
  • Next function
  • Matches paters
  • Send Responses, JSON, TEXT
  • Set header status
  • Express like router in PHP
  • Fast route in PHP
  • Can be used as Auth Validator

Install

To install with composer:

composer require koddn/php-router

Usage

Get the Koddn Php Router

// composer auto loader
require __DIR__ . '/vendor/autoload.php';
use KODDN\ROUTER;
// match get request
ROUTER::get('/',function($req,$res,$next){
 // ..do something 
 $res->send("Welcome to Koddn Php Router");
});

Usage - method 2

Simply add src/KODDN_ROUTER.php file in your project;

// composer auto loader
require __DIR__ . '/src/KODDN_ROUTER.php';
// match get request
ROUTER::get('/',function($req,$res,$next){
 // ..do something 
 $res->send("Thanks");
});

Patterns

You can use patterns to match the request

  • :paramName => named URL segments that are used to capture the values specified at their position in the URL, begin with colon
    • => will capture anything

In the below example we are capturing user id from the url

// URL => /api/user/111
ROUTER::get('/api/user/:id',function($req,$res){
 
 $id=$req['params']['id'];
 // $req['params]=>['id'='111']
 
});

In the example we are capturing using

// URL => /flight/india-usa
ROUTER::get('/flight/:from-:to',function($req,$res){
 
 // $req['params]=['from'=>'india','to'=>'usa'];
 $from =$req['params']['from'];
 $to = $req['params']['to'];
 
});
// URL => /post-name-apc/123
ROUTER::get('/*/:postID',function($req,$res){
 
 // $req['params']=['postID'=>'123'];
 $postID =$req['params']['postID'];
 // do something
 
});

Route Handlers

We can use multiple callback functions to handle the route

ROUTER::get('/some-url', function($req,$res,$next){
 // Do something here
 echo "START" ;
 
 // call Next Callback, control goes to next callback function
 $next();
 
},function($req,$res){
 
 echo "END"; // task completed
 
});

Also, if we want the edited request to be referenced in next callback then use &$req as request parameter

ROUTER::get('/dashboard', function(&$req,$res,$next){
 // if user authorized
 $req['userID']= "someUserID";
 
 $next();
 
},function(&$req){
 
 // now you can have use the req.userID here as well
 
});

Middleware

Sample how we can use it as middleware for authentication

Middlewares can be implemented using "use" method

ROUTER::use('/user',function($req,$res,$next){
 
 ROUTER::get('/me', function ($req, $res, $next) {
 
 // do something here
 });
 });
// OR
ROUTER::use('/user',function($req,$res,$next){
 
 require __DIR__."/routes/user.php"; //
});
ROUTER::post('/login', function(&$req,$res,$next){
 // do the authorize stuff here
 if(!authorize){
 $res->send("invalid");
 }
 $next();
 
},function(&$req,$res){
 
 // do something if authorized
 // grantAccessToSomething
 
});

Redirect

//ROUTER::redirect('/url-to-match', callbackBeforeRedirect, 'redirect to url', $replaceHeaders=false (optional), $redirectCode =301 (optional));
ROUTER::redirect('/url-to-match', function(){/*do some logs*/}, '/new-url', $replaceHeaders =false/*( boolean optional)*/, $redirectCode=301 /*(int optional)*/);

Responses

With Koddn PHP router either you can manually handle responses, or you can use the built-in ones.

ROUTER::post('/about', function($req,$res,$next){
 $res->send("About us");
});

Send JSON data

ROUTER::post('/api/user', function($req,$res,$next){
 $userData=['name'=>"Harpal Singh", 'id'=>11];
 $res->json($userData);
});

Set Header Status Codes

ROUTER::post('/api/user', function($req,$res,$next){
 
 $res->setStatus(404)->send('Not Found');
});

Clear cookies

ROUTER::post('/api/user', function($req,$res,$next){
 // clear all cookies
 $res->clearCookies();
 
 // clear specific cookies
 $res->clearCookies('nameOfCookie');
 
 // do something
 
});

Clear cookies

ROUTER::post('/api/user', function($req,$res,$next){
 // clear Sessions
 $res->clearSession();
 
 // do something
 
});

End request

It is similar to die();

ROUTER::post('/api/user', function($req,$res,$next){
 // clear Sessions
 $res->end();
 // do something
 
});

Redirect using Response

//ROUTER::redirect('redirect to url', $replaceHeaders=false (optional), $redirectCode =301 (optional));
ROUTER::post('/api/user', function($req,$res,$next){
 // clear Sessions
 $res->redirect('/new-url',$replaceHeaders=false /*(optional)*/, $redirectCode =301 /*(optional)*/);
 // do something
 
});

ALL Functions

ROUTER::any('/url-to-match',function(&$req,$res,$next){}/*, function(&$req,$res,$next){}*/);
ROUTER::post('/url-to-match',function(&$req,$res,$next){}/*, function(&$req,$res,$next){}*/);
ROUTER::get('/url-to-match',function(&$req,$res,$next){}/*, function(&$req,$res,$next){}*/);
ROUTER::put('/url-to-match',function(&$req,$res,$next){}/*, function(&$req,$res,$next){}*/);
ROUTER::delete('/url-to-match',function(&$req,$res,$next){}/*, function(&$req,$res,$next){}*/);
ROUTER::redirect('/url-to-match', function(){/*do some logs*/}, '/new-url', $replaceHeaders =false/*( boolean optional)*/, $redirectCode=301 /*(int optional)*/);
ROUTER::post('/url-to-match',function(&$req,$res,$next){
//
//$req = ['$fullUrl' => $fullUrl, 'url' => $url, 'path' => $path, 'params' => $params, 'rPath' => $rPath];
});
ROUTER::post('/url-to-match',function(&$req,$res,$next){
//send
$res->send('Some Text');
//json
$res->json(['id'=>11,'name'=>'Harpal Singh']);
//redirect using response
$res->redirect('/new-url',$replaceHeaders=false /*(optional)*/, $redirectCode =301 /*(optional)*/);
// Exit
$res->end();
// clear all cookies
$res->clearCookies();
// clear specific cookies
$res->clearCookies();
//set Status
$res->setStatus(404)->send('Not Found');
});

About

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.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

Languages

AltStyle によって変換されたページ (->オリジナル) /