getName()); unset($phpReflection); return $laminasReflection; } /** * Get class reflection object * * @return null|ClassReflection */ public function getClass() { $phpReflectionType = parent::getType(); if ($phpReflectionType === null) { return null; } $laminasReflection = new ClassReflection($phpReflectionType->getName()); unset($phpReflectionType); return $laminasReflection; } /** * Get declaring function reflection object * * @return FunctionReflection|MethodReflection */ public function getDeclaringFunction() { $phpReflection = parent::getDeclaringFunction(); if ($phpReflection instanceof \ReflectionMethod) { $laminasReflection = new MethodReflection($this->getDeclaringClass()->getName(), $phpReflection->getName()); } else { $laminasReflection = new FunctionReflection($phpReflection->getName()); } unset($phpReflection); return $laminasReflection; } /** * Get parameter type * * @return string|null */ public function detectType() { if (method_exists($this, 'getType') && null !== ($type = $this->getType()) && $type->isBuiltin() ) { return $type->getName(); } if (null !== $type && $type->getName() === 'self') { return $this->getDeclaringClass()->getName(); } if (($class = $this->getClass()) instanceof \ReflectionClass) { return $class->getName(); } $docBlock = $this->getDeclaringFunction()->getDocBlock(); if (! $docBlock instanceof DocBlockReflection) { return null; } $params = $docBlock->getTags('param'); if (isset($params[$this->getPosition()])) { return $params[$this->getPosition()]->getType(); } return null; } /** * @return string */ public function toString() { return parent::__toString(); } /** * @return string */ public function __toString() { return parent::__toString(); } }