borisbaer: PHP-Router mit Attributen: Automatisches Registrieren und Cachen von Controller-Klassen

Beitrag lesen

Nachtrag:

Dabei würde die entsprechende Methode das Verzeichnis app/controllers durchsuchen und die Namen aller darin befindlichen php-Dateien in einem Controllers-Array sammeln. Die Controller sind jedoch wiederum in mehrere Unterverzeichnis aufgeteilt, weshalb ich nach einer Funktion suche, die auch in allen Unterverzeichnissen von app/controllers nachschaut. Wie könnte man das heutzutage am effektivsten machen? Vielleicht mit dem RecursiveDirectoryIterator?

Das erste Problem konnte ich folgendermaßen lösen:

private function getControllers(): array

{

	$controllers = [];

	$dir = '..' . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'controllers';

	$dir = new \RecursiveDirectoryIterator( $dir, \FilesystemIterator::SKIP_DOTS );

	$iterator = new \RecursiveIteratorIterator( $dir );

	foreach ( $iterator as $fileinfo )

		$controllers[] = implode( '\\', array_map( 'ucwords', explode( '\\', str_replace( '.php', '', substr( $fileinfo -> getPathname(), 3 ) ) ) ) );

	return $controllers;

}