![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/friendsofsymfony/rest-bundle/Request/ |
<?php /* * This file is part of the FOSRestBundle package. * * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace FOS\RestBundle\Request; use Doctrine\Common\Util\ClassUtils; use FOS\RestBundle\Controller\Annotations\ParamInterface; use Symfony\Component\HttpFoundation\Request; /** * Contains the {@link ParamFetcher} params and links them to a request. * * @internal */ final class ParameterBag { private $paramReader; private $params = []; public function __construct(ParamReaderInterface $paramReader) { $this->paramReader = $paramReader; } public function getParams(Request $request): array { $requestId = spl_object_hash($request); if (!isset($this->params[$requestId]) || empty($this->params[$requestId]['controller'])) { throw new \InvalidArgumentException('Controller and method needs to be set via setController.'); } if (null === $this->params[$requestId]['params']) { return $this->initParams($requestId); } return $this->params[$requestId]['params']; } public function addParam(Request $request, ParamInterface $param): void { $requestId = spl_object_hash($request); $this->getParams($request); $this->params[$requestId]['params'][$param->getName()] = $param; } public function setController(Request $request, callable $controller): void { $requestId = spl_object_hash($request); $this->params[$requestId] = [ 'controller' => $controller, 'params' => null, ]; } /** * @return ParamInterface[] */ private function initParams(string $requestId): array { $controller = $this->params[$requestId]['controller']; if (!is_array($controller) || empty($controller[0]) || !is_object($controller[0])) { throw new \InvalidArgumentException('Controller needs to be set as a class instance (closures/functions are not supported)'); } $class = class_exists(ClassUtils::class) ? ClassUtils::getClass($controller[0]) : get_class($controller[0]); return $this->params[$requestId]['params'] = $this->paramReader->read( new \ReflectionClass($class), $controller[1] ); } }