Méthodes statiques liées aux dossiers.
// listing $maListe = FolderUtils::listing("home/www"); echo "Le type de mon élément est: ".$maListe[0]["type"]; echo "Le nom de mon élément est: ".$maListe[0]["name"]; echo "Le nom sans majuscule de mon élément est: ".$maListe[0]["nameSort"];
Visibilité | Nom | Param 1 | Param 2 | Param 3 | Description |
---|---|---|---|---|---|
static public | listing | string $path | Liste les fichiers d'un dossier | ||
static public | delete | string $path | Efface un dossier et tout son contenu | ||
static public | size | string $path | bool $recursive | Récupère la taille du dossier | |
static public | copy | string $source | string $destination | string $type | Copie le contenu d'un dossier dans un autre |
Ajout de la méthode listing
Ajout de la méthode delete
Ajout de la méthode size
Ajout de la méthode copy
Modification de la méthode copy. La copie de sous répertoire était buggée.
Modification de la méthode copy. La copie de sous répertoire était buggée (encore).
/** * Méthodes static liées aux dossiers * @package com.neolao * @subpackage system * @author neolao <neo@neolao.com> * @version 1.5 (08/04/2005) * @link http://resources.neolao.com/php/classes/system/FolderUtils */ class FolderUtils { // ----------------------------- CONSTANTES -------------------------------- // ----------------------------- VARIABLES --------------------------------- /*=========================== METHODES PRIVEES ===========================*/ /*========================================================================*/ /*===================== FIN = METHODES PRIVEES = FIN =====================*/ /*========================================================================*/ /*============================ GETTER SETTER ============================*/ /*========================================================================*/ /*====================== FIN = GETTER SETTER = FIN ======================*/ /*========================================================================*/ /*========================== METHODES PUBLIQUES ==========================*/ /*========================================================================*/ /** * Liste les fichiers d'un dossier * * @param string $path Le chemin du dossier que l'on veut explorer * @return array La liste des fichiers du dossier, sinon false */ static public function listing($path){ // $root = substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], "/")+1); // $folderResource; // La ressource du dossier à explorer // $fileName; // Le nom d'un fichier // $result; // La liste des fichiers trouvés dans le dossier // Si le chemin du dossier ne se termine pas par un slash, on l'ajoute if(substr($path, -1) != "/"){ $path .= "/"; } $folderResource = @opendir($path); if($folderResource !== false){ // L'ouverture du dossier a réussi $result = array(); $i = 0; while (($fileName = readdir($folderResource)) !== false){ $result[$i] = array(); $result[$i]["type"] = filetype($path.$fileName); $result[$i]["nameSort"] = strtolower($fileName); $result[$i]["name"] = $fileName; $i++; } closedir($folderResource); sort($result); return $result; } return false; } /** * Efface un dossier et tout son contenu * @param string $path Le chemin du dossier que l'on veut supprimer * @return bool true si l'opération a réussi, sinon false */ static public function delete($path){ if(!is_dir($path)){ return false; }else{ $path = realpath($path); } $folder = opendir($path); $skip = array(".", ".."); while($file = readdir($folder)){ if (!in_array( $file, $skip)){ if (is_dir($path."/".$file)){ self::delete("$path/$file"); } else { if(!unlink("$path/$file")){ return false; } } } } @closedir($folder); if(!rmdir($path)){ return false; }else{ return true; } } /** * Récupère la taille du dossier * @param string $path Le chemin du dossier * @param bool $recursive Indique s'il faut regarder dans les sous dossiers * @return int La taille du dossier en octect */ static public function size($path , $recursive=TRUE){ $path = realpath($path); $result = 0; if(!is_dir($path) || !is_readable($path)){ return 0; } $fd = dir($path); while($file = $fd->read()){ if(($file != ".") && ($file != "..")){ if(@is_dir("$path/$file")){ $result += $recursive?self::size("$path/$file"):0; }else{ $result += filesize("$path/$file"); } } } $fd->close(); return $result; } /** * Copie le contenu d'un dossier dans un autre * @param string $source Le chemin du dossier source * @param string $destination Le chemin du dossier destination * @param string $type Les extensions à copier, séparées par des ",", sinon "*" pour tout copier * @return bool true si l'opération s'est bien passée, sinon false */ static public function copy($source , $destination, $type="*"){ $sourcePath = realpath($source); $destPath = realpath($destination); $listType = split(",", $type); if(!is_dir($sourcePath) || !is_readable($sourcePath) || !is_dir($destPath) || !is_readable($destPath)){ return false; } $fd = dir($sourcePath); while($file = $fd->read()){ if(($file != ".") && ($file != "..")){ if(is_dir("$sourcePath/$file")){ if(!is_dir("$destPath/$file")){ mkdir("$destPath/$file"); } if(!self::copy("$sourcePath/$file", "$destPath/$file", $type)){ return false; } }else{ $fileInfo = pathinfo("$sourcePath/$file"); if($type === "*" || in_array($fileInfo["extension"], $listType)){ if(!@copy("$sourcePath/$file", "$destPath/$file")){ return false; } } } } } $fd->close(); return true; } /*==================== FIN = METHODES PUBLIQUES = FIN ====================*/ /*========================================================================*/ }