PHP code example of fusonic / http-kernel-extensions
1. Go to this page and download the library: Download fusonic/http-kernel-extensions 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/ */
fusonic / http-kernel-extensions example snippets
// ...
final class UpdateFooDto
{
#[Assert\NotNull]
#[Assert\Positive]
private int $id;
#[Assert\NotBlank]
private string $clientVersion;
#[Assert\NotNull]
private array $browserInfo;
public function getClientVersion(): string
{
return $this->clientVersion;
}
public function setClientVersion(string $clientVersion): void
{
$this->clientVersion = $clientVersion;
}
public function getBrowserInfo(): array
{
return $this->browserInfo;
}
public function setBrowserInfo(array $browserInfo): void
{
$this->browserInfo = $browserInfo;
}
public function getId(): int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
}
// ...
use Fusonic\HttpKernelExtensions\Attribute\FromRequest;
final class FooController extends AbstractController
{
/**
* @Route("/{id}/update", methods={"POST"},
// ...
use Fusonic\HttpKernelExtensions\Attribute\FromRequest;
#[FromRequest]
final class UpdateFooDto
{
// ...
}
// ...
final class FooController extends AbstractController
{
/**
* @Route("/{id}/update", methods={"POST"},
}
}
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Fusonic\HttpKernelExtensions\Exception\ConstraintViolationException;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
final class ExceptionSubscriber implements EventSubscriberInterface {
public function __construct(private NormalizerInterface $normalizer)
{
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::EXCEPTION => 'onKernelException',
];
}
public function onKernelException(ExceptionEvent $event): void
{
$throwable = $event->getThrowable();
if ($throwable instanceof ConstraintViolationException) {
$data = $this->normalizer->normalize($throwable);
$event->setResponse(new JsonResponse($data, 422));
}
}
}
// ...
final class UserIdAwareProvider implements ContextAwareProviderInterface
{
public function __construct(private UserProviderInterface $userProvider)
{
}
public function supports(object $dto): bool
{
return $dto instanceof UserIdAwareInterface;
}
public function provide(object $dto): void
{
if(!($dto instanceof UserIdAwareInterface)){
throw new \LogicException('Object is no instance of '.UserIdAwareInterface::class);
}
$user = $this->userProvider->getUser();
$dto->withUserId($user->getId());
}
}
//...
interface UserIdAwareInterface
{
public function withUserId(int $id): void;
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.