capire che funzione è

OnyOscuro

Nuovo Utente
21 Gen 2011
8
0
0
ciao ragazzi ho un problema... ho un codice e devo capire cosa fa e che funzione è... naturalmente è un pezzo di codice... quindi nn posso eseguirlo... mi date una mano? grazie in anticipo...

Codice:
function nome_funzione($path, $pattern) {

  $handle = opendir($path);
  while (false !== ($cartella = readdir($handle))) {
    if(($cartella!='.')&&($cartella!='..')) {
      if(is_dir($path.'/'.$cartella)) {
$risposta=false;
$risposta=nome_funzione($path.'/'.$cartella,$pattern);
if($risposta)return($risposta);
      } elseif(substr($cartella,0,strlen($cartella)-4)==$pattern)   {
return($path);
      }
    }
  }
  return false;
}
 
Ho dato una pulita alla funzione e ne viene fuori:
PHP:
function nome_funzione($path, $pattern)
{
    $handle = opendir($path);
    
    while (false !== ($cartella = readdir($handle))) {
        if ($cartella == '.' || $cartella == '..') {
            continue;
        }
        
        if (is_dir("{$path}/{$cartella}")) {
            $risposta = false;
            $risposta = nome_funzione("{$path}/{$cartella}", $pattern);
            
            if ($risposta) {
                return $risposta;
            }
        }
        elseif (substr($cartella, 0, -4) == $pattern) {
            return $path;
        }
    }

    closedir($path);
}
Sembrerebbe un'infantile funzione il cui scopo è cercare in un albero di directory (la directory base è il primo parametro) un file con un nome specifico (secondo parametro) e, se esiste, restituire il path.

Se vuoi fare una cosa simile ad oggetti puoi fare così:
PHP:
function search_pattern($path, $pattern)
{
    $dir = new DirectoryIterator($path);
    
    foreach ($dir as $item) {
        if ($item->isDot()) {
            continue;
        }

        if ($item->isDir()) {
            $search = search_pattern($path, $pattern);

            if (!$search) {
                continue;
            }

            return $search;
        }

        if ($item->isFile()) {
            if (fnmatch($pattern, $item->getFilename())) {
                return $item->getPathname();
            }
        }
    }

    return false;
}
E usarlo così:
PHP:
try {
    $path = search_pattern(dirname(__FILE__), 'test*.jpg');
    echo $path;
}
catch (UnexpectedValueException $e) {
    die($e->getMessage());
}
 
Ultima modifica:

Discussioni simili