1. Go to this page and download the library: Download bitexpert/adroit library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
bitexpert / adroit example snippets
/** @var \Interop\Container\ContainerInterface $container */
$actionResolver = new \bitExpert\Adroit\Action\Resolver\ContainerActionResolver($container);
/** @var \Interop\Container\ContainerInterface $container */
$responderResolver = new \bitExpert\Adroit\Responder\Resolver\ContainerAwareResponderResolver($container);
namespace Acme\Domain;
use bitExpert\Adroit\Domain\Payload;
class CustomPayload implements Payload
{
protected $type;
protected $data;
public function __construct($type, array $data = [])
{
$this->type = $type;
$this->data = $data;
}
public function getType()
{
return $this->type;
}
public fuction getValue($name)
{
return isset($this->data[$name]) ? $this->data[$name] : null;
}
}
use Acme\Domain\CustomPayload;
use bitExpert\Adroit\Action\Action;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class HelloWorldAction implements Action
{
/**
* @inheritdoc
*/
protected function __invoke(ServerRequestInterface $request, ResponseInterface $response)
{
return new CustomPayload('hello', ['name' => 'World']);
}
}
namespace Acme\Responder\HelloResponder;
use bitExpert\Adroit\Responder\Responder;
use bitExpert\Adroit\Domain\Payload;
use Psr\Http\Message\ResponseInterface;
class HelloResponder implements Responder
{
/**
* @inheritdoc
*/
public function __invoke(Payload $domainPayload, ResponseInterface $response)
{
$response->getBody()->rewind();
$response->getBody()->write('Hello ' . $domainPayload->getValue('name'));
return $response->withStatus(200)
}
}
use bitExpert\Specialist\Container\ArrayContainer;
$container = new ArrayContainer([
'helloAction' => function (ServerRequestInterface $request, ResponseInterface $response) {
return new CustomPayload('hello', [
'name' => 'World'
]);
},
'hello' => function (Payload $domainPayload, ResponseInterface $response) {
$response->getBody()->rewind();
$response->getBody()->write('Hello ' . $domainPayload->getValue('name'));
return $response;
};
]);
// create the action resolver
$actionResolver = new ContainerActionResolver($container);
// create the responder resolver
$responderResolver = new ContainerResponderResolver($container);
// Provide the request attribute where the routing result identifier is kept
// and your resolvers
$adroit = new AdroitMiddleware('action', [$actionResolver], [$responderResolver]);
// create a request containing an action identifier inside the routing result attribute
$request = ServerRequestFactory::fromGlobals()->withAttribute('action', 'helloAction');
// and run adroit
$response = $adroit($request, new Response());
$emitter = new SapiEmitter();
$emitter->emit($response);
// Gets piped in front of the ActionResolverMiddleware
$adroit->beforeResolveAction($yourMiddleware);
// Gets piped in front of the ActionExecutorMiddleware
$adroit->beforeExecuteAction($yourMiddleware);
// Gets piped in front of the ResponderResolverMiddleware
$adroit->beforeResolveResponder($yourMiddleware);
// Gets piped in front of the ResponderExecutorMiddleware
$adroit->beforeExecuteResponder($yourMiddleware);
function (ServerRequestInterface $request, ResponseInterface $response, callable $next = null) {
// Your awesome code
if ($next)
$response = $next($request, $response);
}
return $response;
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.