/**
  * Retrieves the type of a reflection parameter (null if none is found)
  *
  * @param ParameterReflection $reflectionParameter
  *
  * @return string|null
  */
 private static function extractParameterType(ParameterReflection $reflectionParameter)
 {
     if ($reflectionParameter->isArray()) {
         return 'array';
     }
     if ($reflectionParameter->isCallable()) {
         return 'callable';
     }
     if ($typeClass = $reflectionParameter->getClass()) {
         return $typeClass->getName();
     }
     return null;
 }
 /**
  * fromReflection()
  *
  * @param ReflectionParameter $reflectionParameter
  * @return ParameterGenerator
  */
 public static function fromReflection(ParameterReflection $reflectionParameter)
 {
     $param = new ParameterGenerator();
     $param->setName($reflectionParameter->getName());
     if ($reflectionParameter->isArray()) {
         $param->setType('array');
     } else {
         $typeClass = $reflectionParameter->getClass();
         if ($typeClass !== null) {
             $param->setType($typeClass->getName());
         }
     }
     $param->setPosition($reflectionParameter->getPosition());
     if ($reflectionParameter->isOptional()) {
         $param->setDefaultValue($reflectionParameter->getDefaultValue());
     }
     $param->setPassedByReference($reflectionParameter->isPassedByReference());
     return $param;
 }
 /**
  * For ancient PHP versions (yes, you should upgrade to 7.0):
  *
  * @param ParameterReflection $reflectionParameter
  *
  * @return string|null
  */
 private static function prePhp7ExtractFQCNTypeFromReflectionType(ParameterReflection $reflectionParameter)
 {
     if ($reflectionParameter->isCallable()) {
         return 'callable';
     }
     if ($reflectionParameter->isArray()) {
         return 'array';
     }
     if ($class = $reflectionParameter->getClass()) {
         return $class->getName();
     }
     return null;
 }
 public function testClassReturn()
 {
     $parameter = new Reflection\ParameterReflection(array('ZendTest\\Code\\Reflection\\TestAsset\\TestSampleClass2', 'getProp2'), 'param2');
     $this->assertInstanceOf('Zend\\Code\\Reflection\\ClassReflection', $parameter->getClass());
 }