qlimix / regex-http-router
1.0.2
2020-02-13 19:30 UTC
Requires
- php: ^7.4
- psr/http-server-handler: ^1.0
- qlimix/http-router: ^2.0
Requires (Dev)
- qlimix/code-standard: ^2.0
This package is auto-updated.
Last update: 2024-09-14 06:27:16 UTC
README
Regex HTTP-Router
安装
使用 Composer
$ composer require qlimix/regex-http-router
使用
将路由添加到容器中。使用 Method 对象创建任何方法。
定位器应该能够通过传递给路由的处理程序找到处理对象。
<?php use Qlimix\Http\Router\Container; use Qlimix\Http\Router\Method; use Qlimix\Http\Router\HttpRoute; $container = new Container(); $container->add(new HttpRoute(Method::createGet(), '/foo', 'foo.list', []));
通过配置器将路由添加到容器中。
<?php use Qlimix\Http\Router\Configurator; use Qlimix\Http\Router\Container; use Qlimix\Http\Router\Regex\PlaceHolder; use Qlimix\Http\Router\Regex\PlaceHolderMatcher; use Qlimix\Http\Router\Regex\Registry; use Qlimix\Http\Router\Tokenize\CharTokenizer; use Qlimix\Http\Router\Tokenize\PlaceHolderTokenizer; use Qlimix\Http\Router\Tokenize\Tokenizer; $container = new Container(); $registry = new Registry(); $tokenizer = new Tokenizer([ new PlaceHolderTokenizer(), new CharTokenizer(), ]); $placeHolderMatcher = new PlaceHolderMatcher($tokenizer, $registry); $configurator = new Configurator($container, $placeHolderMatcher); $configurator->get('/foo', 'foo.list', []); $configurator->get('/foo/{id}', 'foo.list', [new PlaceHolder('id', '([\d]+)')]); $configurator->post('/foo', 'foo.create', []); $configurator->put('/foo/{id}', 'foo.update', [new PlaceHolder('id', '([\d]+)')]); $configurator->patch('/foo/{id}', 'foo.patch', [new PlaceHolder('id', '([\d]+)')]); $configurator->head('/foo/{id}', 'foo.head', [new PlaceHolder('id', '([\d]+)')]); $configurator->delete('/foo/{id}', 'foo.delete', [new PlaceHolder('id', '([\d]+)')]); $configurator->options('/foo/{id}', 'foo.options', [new PlaceHolder('id', '([\d]+)')]);
如果使用配置器,可以在注册表中添加全局占位符。
<?php use Qlimix\Http\Router\Regex\PlaceHolder; use Qlimix\Http\Router\Regex\Registry; $registry = new Registry(); $registry->add(new PlaceHolder('id', '([\d]+)'));
生成正则表达式。
<?php use Qlimix\Http\Router\Container; use Qlimix\Http\Router\Match\Builder; use Qlimix\Http\Router\Match\MatchBuilder; use Qlimix\Http\Router\Match\MatcherIteratorFactory; use Qlimix\Http\Router\Tokenize\CharTokenizer; use Qlimix\Http\Router\Tokenize\PlaceHolderTokenizer; use Qlimix\Http\Router\Tokenize\Tokenizer; $container = new Container(); $builder = new Builder(new MatcherIteratorFactory()); $tokenizer = new Tokenizer([ new PlaceHolderTokenizer(), new CharTokenizer(), ]); $matchBuilder = new MatchBuilder($builder, $tokenizer); $regex = $matchBuilder->build($container->getAll());
使用路由器。
<?php use Qlimix\Http\Router\Container; use Qlimix\Http\Router\Regex\Matcher; use Qlimix\Http\Router\RegexHttpRouter; $container = new Container(); $matcher = new Matcher('regex'); $httpRouter = new RegexHttpRouter($container, $matcher); $route = $httpRouter->route($request);
测试
要使用 PHPUnit 在本地运行所有单元测试
$ vendor/bin/phpunit
质量
为了确保代码质量,运行 grumphp,它将运行所有工具
$ vendor/bin/grumphp run
贡献
有关详细信息,请参阅CONTRIBUTING