protected function setParams(array $params = array()) { $newParams = array(); foreach ($params as $param) { $newParams[$param->getName()] = $param; } $this->paramReader->expects($this->any())->method('read')->with(new \ReflectionClass(ClassUtils::getClass($this->controller[0])), $this->controller[1])->willReturn($newParams); }
/** * Returns readable arguments from method. * * @param \ReflectionMethod $method * * @return \ReflectionParameter[] */ private function getMethodArguments(\ReflectionMethod $method) { // ignore all query params $params = $this->paramReader->getParamsFromMethod($method); // ignore several type hinted arguments $ignoreClasses = [\Symfony\Component\HttpFoundation\Request::class, \FOS\RestBundle\Request\ParamFetcherInterface::class, \Symfony\Component\Validator\ConstraintViolationListInterface::class, \Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter::class]; $arguments = []; foreach ($method->getParameters() as $argument) { if (isset($params[$argument->getName()])) { continue; } $argumentClass = $argument->getClass(); if ($argumentClass) { $className = $argumentClass->getName(); foreach ($ignoreClasses as $class) { if ($className === $class || is_subclass_of($className, $class)) { continue 2; } } } $arguments[] = $argument; } return $arguments; }