/**
  * {@inheritdoc}
  */
 public function organiseArguments(ReflectionFunctionAbstract $constructor, array $arguments)
 {
     if (!$constructor instanceof ReflectionMethod) {
         throw new UnsupportedFunctionException(sprintf('ConstructorArgumentOrganiser can only work with ReflectionMethod, but `%s` given.', get_class($constructor)));
     }
     $organisedArguments = $this->baseOrganiser->organiseArguments($constructor, $arguments);
     $this->validateArguments($constructor, $arguments, $organisedArguments);
     return $organisedArguments;
 }
 public function organiseArguments(ReflectionFunctionAbstract $function, array $arguments)
 {
     foreach ($function->getParameters() as $parameter) {
         $parameterClass = $parameter->getClass();
         if (is_null($parameterClass) || !$parameterClass->isSubclassOf('Behat\\Behat\\Context\\Context')) {
             continue;
         }
         //it will be resolved by transformer
         $arguments[$parameter->getName()] = null;
     }
     return $this->baseArgumentOrganiser->organiseArguments($function, $arguments);
 }
Ejemplo n.º 3
0
 /**
  * Resolves arguments for a specific class using registered argument resolvers.
  *
  * @param ReflectionClass $reflection
  * @param array           $arguments
  *
  * @return mixed[]
  */
 private function createArguments(ReflectionClass $reflection, array $arguments)
 {
     foreach ($this->argumentResolvers as $resolver) {
         $arguments = $resolver->resolveArguments($reflection, $arguments);
     }
     if (!$reflection->hasMethod('__construct') || !count($arguments)) {
         return $arguments;
     }
     $constructor = $reflection->getConstructor();
     return $this->argumentOrganiser->organiseArguments($constructor, $arguments);
 }
Ejemplo n.º 4
0
 /**
  * Attempts to match provided definition against a step text.
  *
  * @param Definition          $definition
  * @param string              $stepText
  * @param ArgumentInterface[] $multiline
  *
  * @return null|SearchResult
  */
 private function match(Definition $definition, $stepText, array $multiline)
 {
     $regex = $this->patternTransformer->transformPatternToRegex($definition->getPattern());
     if (!preg_match($regex, $stepText, $match)) {
         return null;
     }
     $function = $definition->getReflection();
     $match = array_merge($match, array_values($multiline));
     $arguments = $this->argumentOrganiser->organiseArguments($function, $match);
     return new SearchResult($definition, $stepText, $arguments);
 }