phpico / router
可能是构建过的最小的功能齐全的PHP Router,适用于Web应用
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 4.8.*
This package is not auto-updated.
Last update: 2024-09-14 18:58:28 UTC
README
PHPico Router 可能是构建过的最小的功能齐全的PHP Router,适用于Web应用。
它适用于轻量级应用。即使是嵌入式使用,如Raspberrypi。
免责声明:这个类对于初学者非常有用。通过查看这个库代码,你可以学到很多。如果你知道如何使用这个路由器,模型-视图-控制器(MVC)将变得非常简单。我保证,只需要一个类,几行代码(少于100行)。
特性
- 非常轻量级
- 旨在快速运行
- 管理你的请求的GET、POST...类型
- 基于正则表达式
- 数组形式的配置
- 允许回调
示例代码
下面的示例展示了你可以用这个路由器做什么。
<?php include('../vendor/autoload.php'); class HomeController{ function index(){ return 'Hello people'; } function greet($a){ return 'Hello '.$a; } } $routes = [ '\/greet\/(.*)' => ['POST', function(){ return "Oh yeah callbacks :D"; }], '\/greet\/(.*)' => ['GET', 'HomeController@greet'], '\/' => 'HomeController' ]; $router = new \PHPico\Router(); echo($router->dispatch($routes));
正则表达式
你可以使用 PCRE。唯一的规则是任何正则表达式都应像这样启动:/^.......$/
,因此你不需要添加开头/结尾分隔符和斜杠。
基本路由
创建路由有多种方式,但基本方法是这个
<?php $routes = [ '\/' => 'HomeController' ];
HomeController 是主命名空间中的一个示例类。如果有任何命名空间,你应该添加它们。如果你使用较新的PHP版本,你可以使用 php HomeController::class
回调路由
你可以使用任何可调用来作为目标。例如这个匿名函数
<?php $routes = [ '\/greet\/(.*)' => function($a){ return "Hello ".$a; }, ];
如你所见,你可以添加参数以便获取正则表达式的捕获。 (.*)
表示捕获任何字符,零次或多次。然后只需将 $a
变量添加到其中以恢复此捕获。
HTTP 请求类型分段
默认情况下,除非指定,否则任何路由都会允许任何类型的请求。但你可以为一种或多种特定请求分割路由。例如
<?php $routes = [ '\/' => ['POST','HomeController'] ];
这意味着除非你发送POST请求,否则对 / 路径的任何请求都将返回false。
你甚至可以添加多个选项,例如
<?php $routes = [ '\/' => ['GET', 'POST','HomeController'] ];
处理404
如果路由未找到,路由器组件将返回false。简单而有效。
<?php if($router->dispatch($routes) === false){ header("HTTP/1.0 404 Not Found"); die('Not found'); }
有什么改进的想法吗?
如果你有任何改进这个库的想法,欢迎提交包含你的改进或修复的拉取请求。请记住,目标是保持代码库尽可能小。