plugowski / php_router
简单的路由引擎,允许在路由上执行匿名函数的代码。
1.0
2016-02-22 16:37 UTC
Requires (Dev)
- phpunit/phpunit: 4.8.9
This package is not auto-updated.
Last update: 2024-09-20 22:58:33 UTC
README
PHP 路由器灵感来自 FatFree、CakePHP 以及个人发明。
它允许使用匿名函数以及 OOP 类和方法作为回调。此外,它能够检测请求是否是异步的(在路由定义中的 [ajax] 标签定义)。
安装
只需克隆该存储库或使用 composer
composer require plugowski/php_router
在您的项目中创建指向分发文件的 .htaccess
文件
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule .* index.php?url=$1 [QSA,L] </IfModule>
用法
基本用法如下所示
<?php require __DIR__ . '/vendor/autoload.php'; use PhpRouter\Route; use PhpRouter\RouteCollection; use PhpRouter\Router; use PhpRouter\RouteRequest; $routing = new RouteCollection(); $routing->attach(new Route('GET /', function(){ echo 'Hello World'; })); (new Router(new RouteRequest(), $routing))->run();
如果您想触发 OOP 类和方法,只需写出完整的命名空间和方法引用(->
或 ::
)
new Route('GET /', '\Full\Namespace\Class->method');
对于命名参数使用 @name
标签,例如
new Route('GET /order/@id', '\Full\Namespace\Class->method');
标准情况下,所有命名参数都将被识别为 (\w-)+
,但如果您想定义自己的模式,可以在第二个参数中作为关联数组进行定义,其中键匹配 @
标签
// $_SERVER['REQUEST_URI'] = '/order/14-XA-43321' new Route('GET /order/@id', ['id' => '\d{2}\-\w{2}\-\d{5}'], function($params) { echo 'Order ID: ' . $params['id']; // Order ID: 14-XA-43321 });
所有命名参数都将作为关联数组传递给被调用的函数的第一个参数。