예제 #1
0
 /**
  * @param RuntimeConfiguration $configuration
  * @param ClassDefinition|null $classDefinition
  * @param MethodDefinition     $methodDefinition
  * @param Parameter            $documentedParameter
  * @param Parameter            $nativeParameter
  *
  * @return Parameter
  */
 protected function mergeParameter(RuntimeConfiguration $configuration, ClassDefinition $classDefinition = null, MethodDefinition $methodDefinition, Parameter $documentedParameter, Parameter $nativeParameter)
 {
     $this->typeCheck->mergeParameter(func_get_args());
     if ($documentedParameter->name() !== $nativeParameter->name()) {
         $this->handleError(new DocumentedParameterNameMismatch($classDefinition, $methodDefinition, $nativeParameter->name(), $documentedParameter->name()));
         return $nativeParameter;
     }
     if ($documentedParameter->isByReference() !== $nativeParameter->isByReference()) {
         $this->handleError(new DocumentedParameterByReferenceMismatch($classDefinition, $methodDefinition, $nativeParameter->name(), $nativeParameter->isByReference()));
     }
     return new Parameter($documentedParameter->name(), $this->mergeType($configuration, $classDefinition, $methodDefinition, $documentedParameter->name(), $documentedParameter->type(), $nativeParameter->type()), $documentedParameter->description(), $nativeParameter->isOptional(), $documentedParameter->isByReference());
 }
 /**
  * @param Parameter $parameter
  *
  * @return mixed
  */
 public function visitParameter(Parameter $parameter)
 {
     $this->typeCheck->visitParameter(func_get_args());
     return new Parameter($parameter->name(), $parameter->type()->accept($this->typeResolver()), $parameter->description(), $parameter->isOptional(), $parameter->isByReference());
 }