DocumentationHelper::parseFolder()
\nn\t3::DocumentationHelper()->parseFolder($path = '', $options = []);
Einen Ordner (rekursiv) nach Klassen mit Annotations parsen. Gibt ein Array mit Informationen zu jeder Klasse und seinen Methoden zurück.
Die Annotations (Kommentare) über den Klassen-Methoden können in Markdown formatiert werden, sie werden automatisch in HTML mit passenden <pre> und <code> Tags umgewandelt.
\Nng\Nnhelpers\Helpers\DocumentationHelper::parseFolder( 'Path/To/Classes/' );
\Nng\Nnhelpers\Helpers\DocumentationHelper::parseFolder( 'EXT:myext/Classes/ViewHelpers/' );
\Nng\Nnhelpers\Helpers\DocumentationHelper::parseFolder( 'Path/Somewhere/', ['recursive'=>false, 'suffix'=>'php', 'parseMethods'=>false] );
Copied!
| @return array
Source Code
public static function parseFolder( $path = '', $options = [] )
{
$options = array_merge([
'recursive' => true,
'suffix' => 'php',
'parseMethods' => true,
], $options);
$classList = [];
$fileList = [];
$suffix = $options['suffix'];
$path = \nn\t3::File()->absPath($path);
if ($options['recursive']) {
$iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS)
);
foreach ($iterator as $file) {
if ($file->isFile() && $file->getExtension() === $suffix) {
$fileList[] = $file->getPathname();
}
}
} else {
$iterator = new \DirectoryIterator($path);
foreach ($iterator as $file) {
if ($file->isFile() && $file->getExtension() === $suffix) {
$fileList[] = $file->getPathname();
}
}
}
// Durch alle php-Dateien im Verzeichnis Classes/Utilities/ gehen
foreach ($fileList as $path) {
$classInfo = self::parseFile( $path, $options['parseMethods'] );
$className = $classInfo['className'];
$classList[$className] = $classInfo;
}
ksort($classList);
return $classList;
}
Copied!