项目作者: kawanamiyuu

项目描述 :
Annotatable Router library for PHP
高级语言: PHP
项目地址: git://github.com/kawanamiyuu/K9u.RequestMapper.git
创建时间: 2019-11-26T23:59:01Z
项目社区:https://github.com/kawanamiyuu/K9u.RequestMapper

开源协议:MIT License

下载


K9u.RequestMapper

badge

Annotatable Request Mapper library for PHP.

Usage

  1. use K9u\RequestMapper\Annotation\GetMapping;
  2. use My\App\Presentation\Blog;
  3. class BlogController
  4. {
  5. /**
  6. * @GetMapping("/blogs/{id}")
  7. */
  8. public function show($id)
  9. {
  10. // snip(find blog by $id)
  11. $blog = [
  12. 'id' => $id,
  13. 'title' => 'Hello world!',
  14. ...
  15. ];
  16. return $blog;
  17. }
  18. }
  1. use K9u\RequestMapper;
  2. $request = $serverRequestFactory->createServerRequest('GET', 'http://example.com/blogs/1', $_SERVER);
  3. $handlerResolver = new HandlerResolver('/path/to/src/Presentation');
  4. $handler = $handlerResolver($request);
  5. // $handler->class = 'My\App\Presentation\Blog\BlogController'
  6. // $handler->method = 'show'
  7. // $handler->pathParams = ['id' => '1']
  8. $handlerClassFactory = ...;
  9. /* @var HandlerClassFactoryInterface $handlerClassFactory */
  10. $handlerMethodArgumentsResolver = ...;
  11. /* @var HandlerMethodArgumentsResolverInterface $handlerMethodArgumentsResolver */
  12. $handlerInvoker = new HandlerInvoker($handlerClassFactory, $handlerMethodArgumentsResolver);
  13. $result = $handlerInvoker($handler, $request);
  14. var_export($result);
  15. // array (
  16. // 'id' => 1,
  17. // 'title' => 'Hello world!',
  18. // ...
  19. // )