/** * {@inheritdoc} */ public function getInheritedProperties() { $properties = []; $allProperties = array_flip(array_map(function (PropertyReflectionInterface $propertyReflection) { return $propertyReflection->getName(); }, $this->reflectionClass->getOwnProperties())); foreach ($this->reflectionClass->getParentClasses() as $class) { $inheritedProperties = []; foreach ($class->getOwnProperties() as $property) { if (!array_key_exists($property->getName(), $allProperties) && !$property->isPrivate()) { $inheritedProperties[$property->getName()] = $property; $allProperties[$property->getName()] = null; } } $properties = $this->sortElements($inheritedProperties, $properties, $class); } return $properties; }
/** * {@inheritdoc} */ public function getUsedProperties() { $allProperties = array_flip(array_map(function (PropertyReflectionInterface $property) { return $property->getName(); }, $this->classReflection->getOwnProperties())); $properties = []; foreach ($this->classReflection->getTraits() as $trait) { if (!$trait instanceof ClassReflectionInterface) { continue; } $usedProperties = []; foreach ($trait->getOwnProperties() as $property) { if (!array_key_exists($property->getName(), $allProperties)) { $usedProperties[$property->getName()] = $property; $allProperties[$property->getName()] = NULL; } } if (!empty($usedProperties)) { ksort($usedProperties); $properties[$trait->getName()] = array_values($usedProperties); } } return $properties; }