protected function getClassDefinitions(SimpleXmlElement $xml)
{
$classNames = [];
foreach ($xml->xpath('file/class|file/interface') as $class) {
$className = (string) $class->full_name;
$className = ltrim($className, '\\');
$fileName = str_replace('\\', '-', $className) . '.md';
$implements = [];
if (isset($class->implements)) {
foreach ($class->implements as $interface) {
$implements[] = ltrim((string) $interface, '\\');
}
}
$extends = [];
if (isset($class->extends)) {
foreach ($class->extends as $parent) {
$extends[] = ltrim((string) $parent, '\\');
}
}
$classNames[$className] = ['fileName' => $fileName, 'className' => $className, 'shortClass' => (string) $class->name, 'namespace' => (string) $class['namespace'], 'description' => (string) $class->docblock->description, 'longDescription' => (string) $class->docblock->{'long-description'}, 'implements' => $implements, 'extends' => $extends, 'isClass' => $class->getName() === 'class', 'isInterface' => $class->getName() === 'interface', 'abstract' => (string) $class['abstract'] == 'true', 'deprecated' => count($class->xpath('docblock/tag[@name="deprecated"]')) > 0, 'methods' => $this->parseMethods($class), 'properties' => $this->parseProperties($class), 'constants' => $this->parseConstants($class)];
}
$this->classDefinitions = $classNames;
}