vendor/drosalys/api-bundle/src/Request/ParamConverter/AutoInstanceObjectParamConverter.php line 50

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the drosalys/api-bundle package.
  4.  *
  5.  * (c) Benjamin Georgeault
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Drosalys\Bundle\ApiBundle\Request\ParamConverter;
  11. use Drosalys\Bundle\ApiBundle\Request\ActionRequestTrait;
  12. use Drosalys\Bundle\ApiBundle\Routing\Attributes\AbstractRoute;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  14. use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter;
  15. use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface;
  16. use Symfony\Component\HttpFoundation\Request;
  17. /**
  18.  * Class AutoInstanceObjectParamConverter
  19.  *
  20.  * @author Benjamin Georgeault
  21.  */
  22. class AutoInstanceObjectParamConverter implements ParamConverterInterface
  23. {
  24.     use ActionRequestTrait;
  25.     public function __construct(
  26.         private DoctrineParamConverter $converter,
  27.     ) {
  28.     }
  29.     public function apply(Request $requestParamConverter $configuration)
  30.     {
  31.         if (
  32.             (null !== $action $this->retrieveActionFromRequest($request))
  33.             && $action->isMethod(AbstractRoute::POST)
  34.             && (null !== $deserializeInfo $action->getDeserializeInfo())
  35.             && $configuration->getName() === $deserializeInfo->getName()
  36.         ) {
  37.             $class $deserializeInfo->getType()->getClassName();
  38.             $request->attributes->set($configuration->getName(), new $class());
  39.             return true;
  40.         }
  41.         if ($this->converter->supports($configuration)) {
  42.             return $this->converter->apply($request$configuration);
  43.         }
  44.         return false;
  45.     }
  46.     public function supports(ParamConverter $configuration): bool
  47.     {
  48.         if ($this->converter->supports($configuration)) {
  49.             return true;
  50.         }
  51.         return null !== $configuration->getClass();
  52.     }
  53. }