phpico / router
可能是构建过的功能最全的、体积最小的PHP 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
The PHPico Router is probably the smallest fully featured PHP Router for web applications ever built.
它适用于轻量级应用。即使用于像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'); }
您有任何改进的建议吗?
如果您有任何改进此库的建议,请随时提交带有您的改进或修复的pull request。请记住,目标是保持代码库尽可能小。