Ciao a tutti,
sono due ore che sto sbattendo la testa per risolvere un problema (probabilmente semplicissimo), ma ormai sono fuso…
Lo scenario è il seguente: ho una funzione di nome getPath($folder, $file) con $folder come cartella iniziale di ricerca e $file il nome del file da cercare in $folder.
Ora $file potrebbe essere dentro a $folder, come a $folder/subdir1 oppure a $folder/subdir1/subdir2/etc..e via dicendo.
Quello che tento di ottenere da getPath è il percorso completo a $file, esempio:
diciamo che $file si trovi in 'controller/cartella1/cartella2/cartella3'
Codice PHP:
$file = 'pippo_controller.php'
$folder = 'controller'; //cartella iniziale dove cominciare la ricerca
Quello che getPath($folder, $file) in questo caso dovrebbe ritornami, una volta trovato $file in 'cartella3',
è la stringa 'controller/cartella1/cartella2/cartella3/pippo_controller.php'
Ho provato con una ricerca ricorsiva delle cartelle, ma evidentmente sto sbagliando qualcosa..
Codice PHP:
public static function getPath($mainDir, $filename) {
$d = opendir($mainDir);
if($d) {
while(($file = readdir($d)) !== false) {
if(is_dir($mainDir."/".$file) && $file != "." && $file != ".." ) {
self :: getPath($mainDir."/". $file, $filename);
}elseif($file == $filename) {
return $mainDir . "/" . $filename;
break;
}
}
}
}
Il tutto funziona correttamente finchè $file è contenuto in $folder e non in una sotto-cartella della stessa.
Qualcuno potrebbe gentilmente aiutarmi a capire cosa sto sbagliando?
Grazie a tutti in anticipo!