hoa / router
Hoa\Router 库。
Requires
- hoa/consistency: ~1.0
- hoa/exception: ~1.0
- hoa/zformat: ~1.0
This package is auto-updated.
Last update: 2021-09-20 08:31:50 UTC
README
Hoa 是一套 模块化、可扩展 和 结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和研究界之间的桥梁。
Hoa\Router
此库允许找到合适的路由并从请求中提取数据。反之,给定一个路由和数据,此库能够构建一个请求。
目前,我们有两个路由器:HTTP(路由理解 URI 和子域名)和 CLI(路由理解完整的命令行)。
了解更多.
安装
使用 Composer,要将此库包含到依赖项中,您需要要求 hoa/router
$ composer require hoa/router '~3.0'
有关更多安装说明,请参阅 源代码页面。
测试
在运行测试套件之前,必须安装开发依赖项
$ composer install
然后,要运行所有测试套件
$ vendor/bin/hoa test:run
有关更多信息,请参阅 贡献者指南。
快速使用
我们提供两种使用的快速概述:在 HTTP 上下文和 CLI 上下文中。
HTTP
我们考虑以下路由
/hello
,只有通过GET
和POST
方法才能访问;/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。
获取帮助
主要有两种方式可以获取帮助
- 在
#hoaproject
IRC频道上, - 在users.hoa-project.net的论坛上。
贡献
你想贡献吗?谢谢!详细的贡献指南解释了你需要知道的一切。
许可
Hoa采用新BSD许可证(BSD-3-Clause)。请参阅LICENSE
以获取详细信息。