/** * 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()); }