KLASA:
Kod
<?php
class Folders {
public static function CreateFolder($path) {
if(!is_array($path)) {
if(file_exists($path)) return $path;
$path = explode('/', $path); // Rozbijam nazwę katalogu
}
$name = '';
foreach($path as $key => $value) {
if(empty($value)) array_splice($path, $key, 1); // Usunięcie wszystkich pustych przestrzeni
else {
$path[$key] = ucfirst($value); // Nazwy katalogów powinny zaczynać się z dużej litery
$name .= $value;
}
}
if(file_exists($name)) return $name.'/';
$cat_path = '';
foreach($path as $value) {
$cat_path .= $value.'/';
if(!file_exists($cat_path)) {
mkdir($cat_path); // Tworzenie katalogów
}
}
return $cat_path;
}
/**
* Metoda pobierająca liste katalogów z danego folderu.
*
* @param string $path - Ścieżka do katalogu z którego mają być odczytane katalogi.
* @return array - Tablica numeryczna z nazwą katalogów || bollean @false jeśli w katalogu nie ma folderów lub ścieżka została błędnie podana.
*/
public static function GetFolders($path) {
if(file_exists($path)) {
$folder_list = array();
if(@$dir = opendir($path)) {
while(($file_name = readdir($dir)) !== false) {
if(is_dir($path.$file_name)) {
if($file_name != '.' && $file_name != '..') $folder_list[] = $file_name;
}
}
closedir($dir);
}
if(!empty($folder_list)) return $folder_list;
else return false;
}
else return false;
}
/**
* Metoda pobierająca liste plików z danego folderu.
*
* @param string $path - Ścieżka do katalogu z którego mają być odczytane pliki.
* @return array - Tablica numeryczna z nazwami plików || bollean @false jeśli w katalogu nie ma plików lub ścieżka została błędnie podana.
*/
public static function GetFiles($path) {
if(file_exists($path)) {
$files_list = array();
if(@$dir = opendir($path)) {
while(($file_name = readdir($dir)) !== false) {
if(is_file($path.$file_name)) $files_list[] = $file_name;
}
closedir($dir);
}
if(!empty($files_list)) return $files_list;
else return false;
}
else return false;
}
/**
* Metoda kasująca określony folder.
*
* @param string $path - Ścieżka do folderu który ma zostać usunięty.
*/
public static function RemoveFolder($path) {
self::RemoveFiles($path); // Kasowanie plików
$folders_list = self::GetFolders($path);
if(!empty($folders_list)) {
foreach($folders_list as $value) { // Kasowanie folderów
self::RemoveFolder($path.$value.'/');
}
@rmdir($path);
}
else @rmdir($path);
}
/**
* Metoda usuwa pliki z podanego folderu.
*
* @param string $path - Ścieżka do folderu z którgo mają zostać usunięte pliki.
*/
public static function RemoveFiles($path) {
$file_list = self::GetFiles($path);
if(!empty($file_list)) {
foreach($file_list as $value) {
@unlink($path.$value); // Kasowanie plików w katalogu
}
}
}
/**
* Metoda kopiuje pliki i katalogi z określonego folderu.
*
* @param string $path - Ścieżka do katalogu w którym mają zostać skopiowane pliki i foldery.
* @param string $destination - Ściezka katalogu do którego mają zostać skopiowane pliki i foldery (katalog nie musi istnieć).
*
* @return bollean @true || bollean @e false - Gdy podano błędną ścieżkę.
*/
public function CopyFolder($path, $destination) {
if(file_exists($path)) {
if(!file_exists($destination)) self::CreateFolder($destination); // Tworzenie katalogu docelowego jeśli nie istnieje
$file_list = self::GetFiles($path); // Pobieram liste plików
if(!empty($file_list)) { // Przenoszenie plików
foreach($file_list as $value) {
@copy($path.$value, $destination.$value);
}
}
$folders_list = self::GetFolders($path);
if(!empty($folders_list)) {
foreach($folders_list as $value) { // Kopiowanie katalogów
self::CopyFolder($path.$value.'/', $destination.$value.'/');
}
}
return true;
}
else return false;
}
}
?>
Kod
<?php
Folders::CopyFolder('Public/Images/', 'Zdjecia/Nowe_zdjecia/');
?>
źródło:
http://forum.php.pl/index.php?showtopic=101863pozdro, trzeba szukać