/** * Converts the given parameter reflection into an information array * * @param ParameterReflection $parameter The parameter to reflect * @param int $parameterPosition * @param MethodReflection|NULL $method * @return array Parameter information array */ protected function convertParameterReflectionToArray(ParameterReflection $parameter, $parameterPosition, MethodReflection $method = null) { $parameterInformation = ['position' => $parameterPosition, 'byReference' => $parameter->isPassedByReference(), 'array' => $parameter->isArray(), 'optional' => $parameter->isOptional(), 'allowsNull' => $parameter->allowsNull()]; $parameterClass = $parameter->getClass(); $parameterInformation['class'] = $parameterClass !== null ? $parameterClass->getName() : null; if ($parameter->isDefaultValueAvailable()) { $parameterInformation['defaultValue'] = $parameter->getDefaultValue(); } if ($parameterClass !== null) { $parameterInformation['type'] = $parameterClass->getName(); } elseif ($method !== null) { $methodTagsAndValues = $this->getMethodTagsValues($method->getDeclaringClass()->getName(), $method->getName()); if (isset($methodTagsAndValues['param']) && isset($methodTagsAndValues['param'][$parameterPosition])) { $explodedParameters = explode(' ', $methodTagsAndValues['param'][$parameterPosition]); if (count($explodedParameters) >= 2) { if (TypeHandlingUtility::isSimpleType($explodedParameters[0])) { // ensure that short names of simple types are resolved correctly to the long form // this is important for all kinds of type checks later on $typeInfo = TypeHandlingUtility::parseType($explodedParameters[0]); $parameterInformation['type'] = $typeInfo['type']; } else { $parameterInformation['type'] = $explodedParameters[0]; } } } } if (isset($parameterInformation['type']) && $parameterInformation['type'][0] === '\\') { $parameterInformation['type'] = substr($parameterInformation['type'], 1); } return $parameterInformation; }
/** * Converts the given parameter reflection into an information array * * @param ParameterReflection $parameter The parameter to reflect * @param integer $parameterPosition * @param MethodReflection|NULL $method * @return array Parameter information array */ protected function convertParameterReflectionToArray(ParameterReflection $parameter, $parameterPosition, MethodReflection $method = NULL) { $parameterInformation = array('position' => $parameterPosition, 'byReference' => $parameter->isPassedByReference(), 'array' => $parameter->isArray(), 'optional' => $parameter->isOptional(), 'allowsNull' => $parameter->allowsNull()); $parameterClass = $parameter->getClass(); $parameterInformation['class'] = $parameterClass !== NULL ? $parameterClass->getName() : NULL; if ($parameter->isDefaultValueAvailable()) { $parameterInformation['defaultValue'] = $parameter->getDefaultValue(); } if ($parameterClass !== NULL) { $parameterInformation['type'] = $parameterClass->getName(); } elseif ($method !== NULL) { $methodTagsAndValues = $this->getMethodTagsValues($method->getDeclaringClass()->getName(), $method->getName()); if (isset($methodTagsAndValues['param']) && isset($methodTagsAndValues['param'][$parameterPosition])) { $explodedParameters = explode(' ', $methodTagsAndValues['param'][$parameterPosition]); if (count($explodedParameters) >= 2) { $parameterInformation['type'] = $explodedParameters[0]; } } } if (isset($parameterInformation['type']) && $parameterInformation['type'][0] === '\\') { $parameterInformation['type'] = substr($parameterInformation['type'], 1); } return $parameterInformation; }