Wie kann ich rekursiv alle Dateien mit einem bestimmten Namen in einem Ordner mit PHP?
Angenommen ich habe einen Ordner mit dem Namen parent
Dort gibt es viele Unterordner wie child1
, child2
etc.
Einige dieser "Kind" - Ordner eine Datei namens module.php
.
Wie kann ich rekursiv überprüfen Sie alle Unterordner des parent
Ordner und alle Dateien namens module.php
in meine Anwendung ein?
Ich habe versucht, das unten und kann nicht herausfinden, was falsch ist:
if ( !function_exists( 'glob_recursive' ) ) {
function glob_recursive( $pattern, $flags = 0 ) {
$files = glob( $pattern, $flags );
foreach ( glob( dirname( $pattern ) . '/*', GLOB_ONLYDIR|GLOB_NOSORT ) as $dir ) {
$files = array_merge( $files, glob_recursive( $dir . '/' . basename( $pattern ), $flags ) );
}
return $files;
}
}
foreach ( glob_recursive( locate_template('/lib/modules/*/module.php' ) as $module ) {
require_once $module;
}
- Wie etwa php.net/manual/en/function.glob.php?
- AFAIK
glob
arbeitet nicht rekursiv - Oh, du hast Recht, mein schlechtes. Der iterator tun sollten, in der Frage weiter unten.
- Ich aktualisierte meinen obigen post zu zählen, was ich getan habe, einschließlich einer glob_recursive Funktion. Aber wie es scheint, bin ich etwas fehlt...
- dies ist der Grund, warum ich möchte, um loszuwerden, php, sobald ich mir leisten kann zu
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl es klingt wie ein schlechtes design um alle Dateien, es ist möglich:
Btw, das Beispiel ist abgeleitet von einer Kommentar in der PHP-manual. Damit es funktioniert, stellen Sie sicher, dass alle sub-Ordner lesbar sind, die von PHP in diesem Ordner. Wenn nicht, machen diese sicher, dass Sie haben, um zu schreiben eine benutzerdefinierte rekursive Funktion dafür (aber dies ist unwahrscheinlich).
Wieder, was Sie tun, ist nicht ein gutes design und wird zu Problemen führen (früher, als Sie vielleicht denken). Wenn Sie nach den OOP-Stil, ein besserer Ansatz wäre, um die
autload
- Mechanismus von PHP.