Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Middleware Dispatcher For Hack

License

NotificationsYou must be signed in to change notification settings

nazg-hack/heredity

Repository files navigation

Middleware Dispatcher For Hack.

Build Status

PSR-7 HTTP message library Not Supported.
Supported Only Hack library.
Required HHVM >= 4.20.0

install

$ composer require nazg/heredity

Usage

Basic

1. Example Simple Request Handler

usetype Nazg\Http\Server\RequestHandlerInterface;usetype Facebook\Experimental\Http\Message\ServerRequestInterface;usetype Facebook\Experimental\Http\Message\ResponseInterface;usetype Ytake\Hungrr\Response;usetype Ytake\Hungrr\StatusCode;usetype NazgHeredityTest\Middleware\MockMiddleware;usenamespace HH\Lib\Experimental\IO;usefunction json_encode;finalclassSimpleRequestHandlerimplementsRequestHandlerInterface {publicfunctionhandle(IO\WriteHandle$handle,ServerRequestInterface$request  ):ResponseInterface {$header=$request->getHeader(MockMiddleware::MOCK_HEADER);if (count($header)) {$handle->rawWriteBlocking(json_encode($header));returnnewResponse($handle,StatusCode::OK);    }$handle->rawWriteBlocking(json_encode([]));returnnewResponse($handle,StatusCode::OK);  }}

2. Creating Middleware

usetype Facebook\Experimental\Http\Message\ResponseInterface;usetype Facebook\Experimental\Http\Message\ServerRequestInterface;usetype Nazg\Http\Server\MiddlewareInterface;usetype Nazg\Http\Server\RequestHandlerInterface;usetype HH\Lib\Experimental\IO\WriteHandle;classSimpleMiddlewareimplementsMiddlewareInterface {publicfunctionprocess(WriteHandle$writeHandle,ServerRequestInterface$request,RequestHandlerInterface$handler,  ):ResponseInterface {// ... do something and return responsereturn$handler->handle($writeHandle,$request);  }}

3. Middleware

usetype Nazg\Heredity\Heredity;usetype Nazg\Heredity\MiddlewareStack;usetype Ytake\Hungrr\ServerRequestFactory;usenamespace HH\Lib\Experimental\IO;list($read,$write)=IO\pipe_non_disposable();$heredity=newHeredity(newMiddlewareStack([SimpleMiddleware::class    ]),newSimpleRequestHandler()  );$response=$heredity->handle($write,ServerRequestFactory::fromGlobals());

With Dependency Injection Container

example.nazg-hack/glue

usenamespace HH\Lib\Str;usetype Nazg\Http\Server\AsyncMiddlewareInterface;usetype Nazg\Heredity\Exception\MiddlewareResolvingException;usetype Nazg\Heredity\Resolvable;usetype Nazg\Glue\Container;classGlueResolverimplementsResolvable<AsyncMiddlewareInterface> {publicfunction__construct(protectedContainer$container  ) {}publicfunctionresolve(classname<AsyncMiddlewareInterface>$middleware  ):AsyncMiddlewareInterface {if ($this->container->has($middleware)) {return$this->container->get($middleware);    }thrownewMiddlewareResolvingException(Str\format('Identifier "%s" is not binding.',$middleware),    );  }}

[8]ページ先頭

©2009-2025 Movatter.jp