amitkhare/easy-router

EasyRouter is an easy to use minimal PHP routing system.

dev-master 2017-12-09 08:46 UTC

This package is not auto-updated.

Last update: 2024-04-12 20:39:45 UTC


README

##EasyRouter is an easy to use minimal PHP routing system

INSTALL

VIA COMPOSER

composer require amitkhare/easy-router dev-master

VIA GIT

git clone https://github.com/amitkhare/easy-router.git

EXAMPLE USAGE

.HTACCESS FILE

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

MINIMAL EXAMPLE

<?php

// autoload via composer
require __DIR__.'/../vendor/autoload.php';

// OR WITHOUT COMPOSER
// require __DIR__.'/PATH-TO/EasyRouter.php';

// Take an instance of Router Class.
$router = new AmitKhare\EasyRouter();

// URL::GET www.example.com/product/10
// anonymous callback function
$router->add('GET','/product/{id:num}', function($id){
	echo  $id;
});

// OR Callback of a class->method()
// URL::GET www.example.com/
$router->add("GET",'/', [Page::class,"home"])->setName('home');

// Dispatch Routes.
$router->dispatch();

DETAILED EXAMPLE

<?php

use App\Controllers\Page;

// autoload via composer
require __DIR__.'/../vendor/autoload.php';

// OR WITHOUT COMPOSER
// require __DIR__.'/PATH-TO/EasyRouter.php';

// use namespace
use AmitKhare\EasyRouter;

// Take an instance of Router Class.
// (Optional) set Base URI as second perameter
$baseURI = "/";
$router = new EasyRouter(['var1'=>123],$baseURI);

// URL::GET www.example.com/
$router->add("GET",'/', [Page::class,"home"])->setName('home');

// URL::GET www.example.com/article/tshirts/323
// anonymous callback function
$router->add("GET",'/article/{category:w}/{id:num}/', function($category, $id){
    echo "Category: ".$category."<br/>";
    echo "ID: ".$id;
});

// URL::GET www.example.com/product/222
$router->add("GET",'/product/{id:d}', [Page::class,"product"]);

// URL::POST www.example.com/product
$router->add("POST",'/product', [Page::class,"product_process"]);

// URL::GET www.example.com/about/something/
$router->add("GET",'/about/{var1:w}', [Page::class,"about"],['myname'=>'amitkhare']);

// Dispatch Routes.
$router->dispatch();

PAGE CLASS

namespace App\Controllers;

class Page {
	public function __construct($vars=[]) {
		foreach ($vars as $key => $value) {
			$this->$key= $value;
		}
	}
	public function get($vars)
	{
		echo $this->db."<br/>";
		echo $this->var1."<br/>";
		echo $this->var1."<br/>";
		print_r($vars);
	}
	public function about($vars)
	{
		echo $vars->var1."<br/>";
		echo $vars->myname."<br/>";
	}
	public function product($vars)
	{
		echo " ID: ".$vars->id;
	}
	public function home()
	{
		echo "this is home.";
	}
	public function product_process()
	{
		echo "this will show only if accessed via POST method.";
	}
}