polus / adr
adr的版本基础
5.0.0
2020-10-13 12:53 UTC
Requires
- php: >=7.4.0
- payload-interop/payload-interop: ^1.0
- polus/middleware-dispatcher: ^2.0
- polus/router: ^2.0
- psr/event-dispatcher: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- circli/event-dispatcher: ^2.2.0
- nyholm/psr7: ^1.0
- phpunit/phpunit: ^8.0
- polus/relay-middleware-dispatcher: ^2.0
README
这是我对ADR的实现
安装
安装此库的首选方法是使用Composer,在项目根目录运行以下命令
$ composer require polus/adr
您还需要包含一个路由器和中间件调度器的实现
当前可用的路由器
当前可用的中间件调度器
旧版本
查看polus/polus-adr获取版本1和2
示例
<?php use Aura\Payload_Interface\PayloadInterface;use Aura\Router\RouterContainer;use Http\Factory\Diactoros\ResponseFactory;use Http\Factory\Diactoros\ServerRequestFactory;use Polus\Adr\Actions\AbstractDomainAction;use Polus\Adr\Adr;use Polus\Adr\Interfaces\Resolver;use Polus\Adr\ResponseHandler\HttpResponseHandler;use Polus\Router\AuraRouter\RouterCollection;use Polus\Router\RouterMiddleware;use Psr\Http\Message\ResponseInterface;use Psr\Http\Message\ServerRequestInterface; $responseFactory = new \Http\Factory\Diactoros\ResponseFactory(); $routerContainer = new RouterContainer(); $routerCollection = new RouterCollection($routerContainer->getMap()); $routerDispatcher = new Polus\Router\AuraRouter\Dispatcher($routerContainer); $actionResolver = new class implements Resolver { //.. }; $adr = new Adr( new ResponseFactory(), $actionResolver, $routerCollection, new HttpResponseHandler(), new \Polus\MiddlewareDispatcher\Factory( new \Polus\MiddlewareDispatcher\Relay\Dispatcher($responseFactory), [ new RouterMiddleware($routerDispatcher), //More psr-15 middlewares ] ) ); //Define routes and actions class Responder implements Responder { public function __invoke( ServerRequestInterface $request, ResponseInterface $response, PayloadInterface $payload ): ResponseInterface { $response->getBody()->write("Index responder\n"); return $response; } } $adr->get('/', new class extends AbstractDomainAction { protected $responder = Responder::class; }); //Run application $factory = new ServerRequestFactory(); $adr->run($factory->createServerRequestFromArray($_SERVER));