Skip to content

Třída Dir

Utility pro operace s adresáři. Statická třída s metodami pro vytvoření, přejmenování, kopírování, smazání a správu adresářů.

Všechny operace automaticky nastavují oprávnění pomocí konstant z třídy FileSystem:

  • Nové adresáře: FileSystem::DEFAULT_DIR_PERMISSIONS (0777)
  • Nové soubory: FileSystem::DEFAULT_FILE_PERMISSIONS (0666)

Klíčové metody

Metoda Popis
create(string $newDir, bool $showMessage = false): bool Vytvoř nový adresář
rename(string $old, string $new, bool $showMessage = false): bool Přejmenuj adresář
copy(string $source, string $destination): void Kopíruj adresář rekurzivně
delete(string $dir, bool $showMessage = false, bool $full = false): bool Smaž adresář
deleteOldFiles(string $dir, float\|int $hours, string $includePattern, string $excludePattern): void Smaž staré soubory
isEmpty(string $dir): bool Je adresář prázdný?
checkContentStatus(string $dir): string\|false Vrať 'empty' nebo 'full'
recursiveDelete(string $path): bool Rekurzivně smaž vše
join(string ...$segments): string Spoj segmenty cesty

Metody

Dir::create(string $newDir, bool $showMessage = false): bool

Vytvoří nový adresář.

Parametry:

  • $newDir – cesta k novému adresáři
  • $showMessage – zobrazit zprávu?

Návratová hodnota:

  • true pokud byl adresář vytvořen
  • false pokud již existuje nebo selhalo vytvoření

Příklad:

use Petrovo\FileSystem\Dir;

Dir::create('/var/www/new_folder', true);
// Výstup: "Success, directory created! (new_folder)"


Dir::rename(string $old, string $new, bool $showMessage = false): bool

Přejmenuje adresář.

Parametry:

  • $old – stará cesta
  • $new – nová cesta
  • $showMessage – zobrazit zprávu?

Návratová hodnota:

  • true pokud bylo úspěšné
  • false pokud selhalo

Příklad:

use Petrovo\FileSystem\Dir;

Dir::rename('/var/www/old_name', '/var/www/new_name', true);


Dir::copy(string $source, string $destination): void

Kopíruje adresář a všechen jeho obsah rekurzivně.

Chování:

  • Vytvoří cílový adresář
  • Nastaví oprávnění: dirům 0777, souborům 0666
  • Rekurzivně kopíruje všechen obsah

Parametry:

  • $source – zdrojový adresář
  • $destination – cílový adresář

Příklad:

use Petrovo\FileSystem\Dir;

Dir::copy('/var/www/original', '/var/www/backup');
// Zkopíruje /original se všeným obsahem do /backup


Dir::delete(string $dir, bool $showMessage = false, bool $full = false): bool

Smaže adresář.

Chování:

  • Prázdný adresář: vždy se smaže
  • Plný adresář: smaže se jen pokud:
  • CONFIG['deleteFullDirectory'] je true, NEBO
  • $full parametr je true

Parametry:

  • $dir – cesta k adresáři
  • $showMessage – zobrazit zprávu?
  • $full – vynutit smazání i s obsahem?

Návratová hodnota:

  • true pokud byl smazán
  • false pokud selhalo (adresář neexistuje, není prázdný bez $full, atd.)

Příklad:

use Petrovo\FileSystem\Dir;

// Smaž prázdný adresář
Dir::delete('/var/www/empty_folder', true);

// Smaž i s obsahem
Dir::delete('/var/www/folder_with_files', true, true);


Dir::deleteOldFiles(string $dir, float|int $hours, string $includePattern, string $excludePattern): void

Smaže soubory starší než zadaný počet hodin.

Parametry:

  • $dir – adresář
  • $hours (default: 2) – věk v hodinách
  • $includePattern – regex pro zahrnutí
  • $excludePattern – regex pro vyloučení

Příklad:

use Petrovo\FileSystem\Dir;

// Smaž soubory starší než 24 hodin
Dir::deleteOldFiles('/var/www/temp', 24);

// Smaž jen .tmp soubory starší než 1 hodinu
Dir::deleteOldFiles('/var/www/cache', 1, '/\.tmp$/', '/^$/');


Dir::isEmpty(string $dir): bool

Kontroluje, zda je adresář prázdný.

Návratová hodnota:

  • true pokud je prázdný nebo neexistuje
  • false pokud obsahuje soubory

Příklad:

use Petrovo\FileSystem\Dir;

if (Dir::isEmpty('/var/www/folder')) {
    echo 'Adresář je prázdný';
}


Dir::checkContentStatus(string $dir): string|false

Vrací stav obsahu adresáře.

Návratová hodnota:

  • 'empty' pokud je prázdný
  • 'full' pokud obsahuje soubory
  • false pokud není adresář

Příklad:

use Petrovo\FileSystem\Dir;

$status = Dir::checkContentStatus('/var/www/folder');
// Vrátí: 'empty' nebo 'full' nebo false


Dir::recursiveDelete(string $path): bool

Rekurzivně smaže adresář a všechen jeho obsah.

Návratová hodnota:

  • true pokud byl smazán
  • false pokud selhalo

Příklad:

use Petrovo\FileSystem\Dir;

Dir::recursiveDelete('/var/www/folder');
// Smaž všechno bez omezení


Dir::join(string ...$segments): string

Spojí segmenty cesty pomocí odpovídajícího oddělovače (DIRECTORY_SEPARATOR).

Parametry:

  • ...$segments – libovolný počet segmentů cesty

Návratová hodnota:

  • Složená cesta

Příklad:

use Petrovo\FileSystem\Dir;

$path = Dir::join('var', 'www', 'html');
// Vrátí: 'var/www/html' (na Linuxu) nebo 'var\\www\\html' (na Windows)


Shrnutí

Třída Dir je určena pro operace s adresáři. Pro jednotlivé soubory používej File, pro hromadné operace Files.