hoa/router

此包已被废弃,不再维护。没有推荐替代包。

Hoa\Router 库。

3.17.01.14 2017-01-14 12:27 UTC

README

Hoa

Build status Code coverage Packagist License

Hoa 是一套 模块化可扩展结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和研究界之间的桥梁。

Hoa\Router

Help on IRC Help on Gitter Documentation Board

此库允许找到合适的路由并从请求中提取数据。反之,给定一个路由和数据,此库能够构建一个请求。

目前,我们有两个路由器:HTTP(路由理解 URI 和子域名)和 CLI(路由理解完整的命令行)。

了解更多.

安装

使用 Composer,要将此库包含到依赖项中,您需要要求 hoa/router

$ composer require hoa/router '~3.0'

有关更多安装说明,请参阅 源代码页面

测试

在运行测试套件之前,必须安装开发依赖项

$ composer install

然后,要运行所有测试套件

$ vendor/bin/hoa test:run

有关更多信息,请参阅 贡献者指南

快速使用

我们提供两种使用的快速概述:在 HTTP 上下文和 CLI 上下文中。

HTTP

我们考虑以下路由

  • /hello,只有通过 GETPOST 方法才能访问;
  • /bye,只有通过 GET 方法才能访问;
  • /hello_<nick> 只有通过 GET 方法才能访问。

声明路由有不同方式,但最常见的是如下所示

$router = new Hoa\Router\Http();
$router
    ->get('u', '/hello', function () {
        echo 'world!', "\n";
    })
    ->post('v', '/hello', function (Array $_request) {
        echo $_request['a'] + $_request['b'], "\n";
    })
    ->get('w', '/bye', function () {
        echo 'ohh :-(', "\n";
    })
    ->get('x', '/hello_(?<nick>\w+)', function ($nick) {
        echo 'Welcome ', ucfirst($nick), '!', "\n";
    });

我们可以使用基本派发器自动调用相关可调用的适当规则

$dispatcher = new Hoa\Dispatcher\Basic();
$dispatcher->dispatch($router);

现在,我们将使用 cURL 来测试我们监听在 127.0.0.1:8888 的程序

$ curl 127.0.0.1:8888/hello
world!
$ curl -X POST -d a=3\&b=39 127.0.0.1:8888/hello
42
$ curl 127.0.0.1:8888/bye
ohh :-(
$ curl -X POST 127.0.0.1:8888/bye
// error
$ curl 127.0.0.1:8888/hello_gordon
Welcome Gordon!
$ curl 127.0.0.1:8888/hello_alyx
Welcome Alyx!

这个简单的 API 隐藏了一个模块化机制,可以通过输入 print_r($router->getTheRule()) 来预览。

要取消路由,即执行相反的操作,我们可以这样做

var_dump($router->unroute('x', array('nick' => 'gordon')));
// string(13) "/hello_gordon"

CLI

我们希望在 Router.php 文件中识别以下路由 [<group>:]?<subcommand> <options>

$router = new Hoa\Router\Cli();
$router->get(
    'g',
    '(?<group>\w+):(?<subcommand>\w+)(?<options>.*?)'
    function ($group, $subcommand, $options) {
        echo
            'Group     : ', $group, "\n",
            'Subcommand: ', $subcommand, "\n",
            'Options   : ', trim($options), "\n";
    }
);

我们可以使用基本派发器自动调用相关可调用的关联函数

$dispatcher = new Hoa\Dispatcher\Basic();
$dispatcher->dispatch($router);

现在是测试时间

$ php Router.php foo:bar --some options
Group     : foo
Subcommand: bar
Options   : --some options

使用 Hoa\Console 来解析选项和为终端提供一些舒适的服务是个好主意。

文档

《Hoa\Router》黑客手册包含了关于如何使用此库及其工作原理的详细信息。

要在本地生成文档,请执行以下命令

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

更多文档可以在项目网站上找到: hoa-project.net

获取帮助

主要有两种方式可以获取帮助

贡献

你想贡献吗?谢谢!详细的贡献指南解释了你需要知道的一切。

许可

Hoa采用新BSD许可证(BSD-3-Clause)。请参阅LICENSE以获取详细信息。