PHP code example of kafkiansky / symfony-middleware
1. Go to this page and download the library: Download kafkiansky/symfony-middleware 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/ */
use Kafkiansky\SymfonyMiddleware\Attribute\Middleware;
#[Middleware([ValidatesQueryParams::class])]
final class SomeController
{
#[Middleware([ConvertStringsToNull::class])]
public function index(): void
{
}
}
use Kafkiansky\SymfonyMiddleware\Attribute\Middleware;
#[Middleware([ValidatesQueryParams::class, ConvertStringsToNull::class])]
final class SomeController
{
public function __invoke(): void
{
}
}
use Kafkiansky\SymfonyMiddleware\Attribute\Middleware;
#[Middleware(['debug'])]
final class SomeController
{
public function __invoke(): void
{
}
}
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ResponseInterface;
final class ModifyRequestMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
return $handler->handle($request->withAttribute(__CLASS__, 'handled'))
}
}
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ResponseInterface;
final class ModifyResponseMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$response = $handler->handle($request)
return $response->withHeader('x-developer', 'kafkiansky');
}
}
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ResponseInterface;
use Nyholm\Psr7\Response;
final class StopExecution implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$response = new Response(200, [], json_encode(['success' => false]));
return $response;
}
}
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ResponseInterface;
use Nyholm\Psr7\Response;
use Kafkiansky\SymfonyMiddleware\Psr\PsrResponseTransformer;
use Symfony\Component\HttpFoundation\JsonResponse;
final class StopExecution implements MiddlewareInterface
{
private PsrResponseTransformer $psrResponseTransformer;
public function __construct(PsrResponseTransformer $psrResponseTransformer)
{
$this->psrResponseTransformer = $psrResponseTransformer;
}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
return $this->psrResponseTransformer->toPsrResponse(new JsonResponse(['success' => false]));
}
}
use Kafkiansky\SymfonyMiddleware\Attribute\Middleware;
#[Middleware(['debug', 'api', SomeMiddleware::class])]
#[Middleware([SomeAnotherMiddleware::class])]
final class SomeController
{
public function __invoke(): void
{
}
}
use Kafkiansky\SymfonyMiddleware\Attribute\Middleware;
#[Middleware(['debug', 'api', SomeMiddleware::class])]
final class SomeController
{
#[Middleware([SomeAnotherMiddleware::class, 'web'])]
#[Middleware(['tracking'])]
public function index(): void
{
}
}
// Authorization Middleware
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ResponseInterface;
use Nyholm\Psr7\Response;
final class AuthorizeRequests implements MiddlewareInterface
{
private string $basicUser;
private string $basicPassword;
public function __construct(string $basicUser, string $basicPassword)
{
$this->basicUser = $basicUser;
$this->basicPassword = $basicPassword;
}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$user = $request->getServerParams()['PHP_AUTH_USER'] ?? null;
$passwd = $request->getServerParams()['PHP_AUTH_PW'] ?? null;
if ($user === $this->basicUser && $passwd === $this->basicPassword) {
return $handler->handle($request);
}
return new Response(401, [
'WWW-Authenticate' => 'Basic realm="Backend"'
]);
}
}
// Some controller
use Symfony\Component\HttpFoundation\JsonResponse;
use Kafkiansky\SymfonyMiddleware\Attribute\Middleware;
final class SomeController
{
#[Middleware(['basic'])] // via middleware group
public function writeArticle(): JsonResponse
{
}
#[Middleware([App\Middleware\AuthorizeRequests::class])] // via concrete class
public function deleteArticle(): JsonResponse
{
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.