1. Go to this page and download the library: Download oryx/adr 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/ */
oryx / adr example snippets
use Oryx\Adr\Action\ActionInterface;
use Oryx\Adr\Domain\DomainInterface;
use Oryx\Adr\Responder\ResponderFactory;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface as PsrResponseInterface;
use Laminas\Diactoros\ServerRequest;
use Laminas\Diactoros\Response;
// Define your domain
class UserDomain implements DomainInterface {
public function getUserProfile(int $userId): array {
// Business logic here
return [
'id' => $userId,
'name' => 'John Doe',
'email' => '[email protected]'
];
}
}
// Define your responder
class JsonApiResponder implements ResponderInterface {
private $data;
public function __construct(array $data) {
$this->data = $data;
}
public function respond(): ResponseInterface {
// Simplified JSON:API responder for example
return new \Laminas\Diactoros\JsonResponse($this->data);
}
}
// Define your action
class GetUserProfileAction implements ActionInterface {
private UserDomain $domain;
private ResponderFactory $responderFactory;
public function __construct(UserDomain $domain, ResponderFactory $responderFactory) {
$this->domain = $domain;
$this->responderFactory = $responderFactory;
}
public function execute(DomainInterface $domain): string {
// Extract user ID from request (in real implementation)
$userId = 123;
// Delegate to domain
$userData = $domain->getUserProfile($userId);
// Return responder class name
return JsonApiResponder::class;
}
public function __invoke(ServerRequestInterface $request, PsrResponseInterface $response, callable $next = null): PsrResponseInterface
{
// Execute the action to get the responder class name
$responderClass = $this->execute($this->domain);
// Create the responder instance using the factory
$responderInstance = $this->responderFactory->create($responderClass);
// Generate and return the response
return $responderInstance->respond();
}
}
// Usage in oryx/mvc
$app = new \Oryx\Mvc\Application();
$container = $app->getContainer();
// Register your domain and responder factory with the container
// Example:
// $container->set(UserDomain::class, new UserDomain());
// $container->set(\Oryx\Adr\Responder\ResponderFactory::class,
// new \Oryx\Adr\Responder\DefaultResponderFactory($container));
// Then create your action and process the request.
use Oryx\Adr\Responder\JsonApiResponder;
use Oryx\Adr\Responder\ProblemDetailsResponder;
// JSON:API responder for successful responses
$jsonApiResponder = new JsonApiResponder([
'data' => [
'type' => 'users',
'id' => '1',
'attributes' => [
'name' => 'John Doe',
'email' => '[email protected]'
]
]
]);
// Problem Details responder for error responses
$problemDetailsResponder = new ProblemDetailsResponder(
'https://example.com/probs/out-of-credit',
'You do not have enough credit.',
403,
'Your account has only 5 USD left.',
'https://example.com/account/12345/msgs/abc'
);
use Oryx\Adr\Middleware\ManifestJsonMiddleware;
use Oryx\Mvc\Application;
// Create application
$app = new Application();
// Add PWA manifest middleware
$app->addMiddleware(new ManifestJsonMiddleware());
// Add other middleware and routes...
$app->run();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.