amitkhare / easy-router
EasyRouter 是一个易于使用的最小化PHP路由系统。
dev-master
2017-12-09 08:46 UTC
This package is not auto-updated.
Last update: 2024-09-13 22:30:38 UTC
README
##EasyRouter 是一个易于使用的最小化PHP路由系统
安装
通过 Composer
composer require amitkhare/easy-router dev-master
通过 Git
git clone https://github.com/amitkhare/easy-router.git
示例用法
HTACCESS 文件
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L]
最小示例
<?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();
详细示例
<?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();
页面类
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."; } }