1. Go to this page and download the library: Download cubadevops/flexi 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/ */
cubadevops / flexi example snippets
use Flexi\Domain\Classes\Router;
use Psr\Http\Message\ServerRequestInterface;
use Flexi\Infrastructure\Factories\ContainerFactory;
/** @var Router $router */
$router = ContainerFactory::getInstance()->get(Router::class); // or use router alias
$route = $router->getByName('home'); // Get a route by name
$route->getPath(); // Get the path of the route to pass to the template
use Flexi\Domain\Interfaces\EventBusInterface;
use Flexi\Domain\Classes\Event;
use Flexi\Application\UseCase\Health;
use Flexi\Infrastructure\Factories\ContainerFactory;
use Flexi\Infrastructure\Bus\EventBus;
$eventBus = ContainerFactory::getInstance()->get(EventBus::class);
$event = new Event('health-check', Health::class, ['from' => $_SERVER['REMOTE_ADDR']);
$eventBus->notify($event);
use Flexi\Infrastructure\Bus\CommandBus;
// Assume $command is a class that implements the DTOInterface
$commandBus->execute($command);
use Flexi\Infrastructure\Bus\QueryBus;
// Assume $query is a class that implements the DTOInterface
$result = $queryBus->execute($query);
namespace Flexi\Modules\Home\Infrastructure\Controllers;
use Flexi\Infrastructure\Classes\HttpHandler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class AuthenticatedController extends HttpHandler
{
protected function process(ServerRequestInterface $request): ResponseInterface
{
// This method is called automatically after all middlewares have been processed
$response = $this->createResponse();
$response->getBody()->write('Authorized');
return $response;
}
}
namespace Flexi\Infrastructure\Controllers;
use Flexi\Infrastructure\Bus\QueryBus;
use Flexi\Application\Queries\GetVersionQuery;
use Flexi\Infrastructure\Classes\HttpHandler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class HealthController extends HttpHandler
{
private QueryBus $query_bus;
public function __construct(QueryBus $query_bus)
{
$this->query_bus = $query_bus;
parent::__construct(); // Always call parent constructor
}
protected function process(ServerRequestInterface $request): ResponseInterface
{
// Execute business logic using CQRS pattern
$version = $this->query_bus->execute(new GetVersionQuery());
$response = $this->createResponse();
$response->getBody()->write('Version: ' . $version);
return $response;
}
}
namespace Flexi\Infrastructure\Controllers;
use Flexi\Domain\Interfaces\TemplateEngineInterface;
use Flexi\Infrastructure\Classes\HttpHandler;
use Flexi\Contracts\Classes\Traits\FileHandlerTrait;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class NotFoundController extends HttpHandler
{
use FileHandlerTrait;
private TemplateEngineInterface $html_render;
public function __construct(TemplateEngineInterface $html_render)
{
$this->html_render = $html_render;
parent::__construct();
}
protected function process(ServerRequestInterface $request): ResponseInterface
{
$body = $this->html_render->render(
$this->normalize('./src/Infrastructure/Ui/Templates/404.html'),
['request' => $request->getUri()->getPath()]
);
$response = $this->createResponse(404, 'Not Found');
$response->getBody()->write($body);
return $response;
}
}
namespace Flexi\Infrastructure\Middlewares;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
class AuthCheckMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
// Perform authentication logic here and stop the execution chain if necessary
// or pass the request
return $handler->handle($request);
}
}
namespace Flexi\Test\YourNamespace;
use PHPUnit\Framework\TestCase;
class YourTest extends TestCase
{
public function testSomething(): void
{
// Test environment variables from .env.testing are automatically loaded
$this->assertTrue(true);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.