public function getFullClassName($type) { foreach ($this->getEntries() as $use) { if ($use['alias'] === $type) { return $use['type']; } } $sample = Property::build($type); if (!$sample->isBasicType() && substr($type, 0, 1) !== '\\') { $type = implode('\\', ['', $this->baseNamespace, $type]); } return $type; }
/** * @param $object * @return Property[] */ public static function getProperties($object) { $response = []; $oReflection = new \ReflectionClass($object); $namespaceUse = NamespaceUse::fromReflectionClass($oReflection); foreach (self::getDocBlockLines($oReflection) as $line) { preg_match(self::REGEX_PROPERTY_EXTRACT, $line, $matches); if ($matches) { $type = $namespaceUse->getFullClassName($matches[1]); $response[$matches[3]] = Property::build($type, $matches[2] === '[]'); } } return $response; }