phpico/router

可能是构建过的功能最全的、体积最小的PHP Web应用路由器

1.0.0-RC2 2016-04-06 13:40 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:28 UTC


README

Join the chat at https://gitter.im/PHPico/Router Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

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。请记住,目标是保持代码库尽可能小。