plugowski/php_router

简单的路由引擎,允许在路由上执行匿名函数的代码。

1.0 2016-02-22 16:37 UTC

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 
});

所有命名参数都将作为关联数组传递给被调用的函数的第一个参数。

许可

新 BSD 许可证:https://open-source.org.cn/licenses/BSD-3-Clause