Souborová fasáda v Laravelu: Neoficiální dokumentace

Odhalení funkce Laravel File Fasáda Na stránkách File fasáda ukotvený v Illuminate\Support\Facades\File Prostor názvů je mocnou, ale přesto nenápadnou součástí ekosystému Laravel....

Poptat web

03. 09. 2025

Souborová fasáda v Laravelu: Neoficiální dokumentace

Odhalení funkce Laravel File Fasáda

Na stránkách File fasáda ukotvený v Illuminate\Support\Facades\File Prostor názvů je mocnou, ale přesto nenápadnou součástí ekosystému Laravel. Na rozdíl od dobře zdokumentovaného Storage fasády, je jeho API méně často zdůrazňováno, ale nabízí pokladnici souborových a adresářových operací, které jsou ideální pro každodenní pracovní postupy vývojářů.

Dostupné metody pod fasádou souboru

Existence a stav souboru

  • exists(string $path) / missing(string $path) - Potvrzení přítomnosti nebo nepřítomnosti souboru.
  • isReadable(string $path), isWritable(string $path), isFile(string $file), isDirectory(string $directory), isEmptyDirectory(string $directory, bool $ignoreDotFiles = false) - Státní kontroly, abyste se vyhnuli překvapením.

Čtení souborů a extrakce dat

  • get(string $path, bool $lock = false) - Čtení obsahu souboru s volitelným zamykáním.
  • json(string $path, int $flags, bool $lock = false) - Čtení a dekódování JSON přímo z disku.
  • lines(string $path) → vrací a LazyCollection - Iterujte soubory řádek po řádku, aniž byste museli zabírat paměť.

Integrita, Hashing a porovnávání

  • hash(string $path, string $algorithm = 'md5') - Výpočet hashe souboru (výchozí MD5).
  • hasSameHash(string $firstFile, string $secondFile) - Okamžité porovnání rovnosti obsahu souborů pomocí hash.

Psaní a úpravy textu

  • put(string $path, string $contents, bool $lock = false) - Zápis do souboru s volitelným zámkem.
  • replace(string $path, string $content, int|null $mode = null) - Přepsat celý soubor.
  • replaceInFile(array|string $search, array|string $replace, string $path) - Řádkové vyhledávání a nahrazování.
  • prepend(string $path, string $data), append(string $path, string $data, bool $lock = false) - Přidání obsahu na začátek nebo konec souboru.
  • chmod(string $path, int|null $mode = null) - Změna oprávnění k souborům.

Manipulace se soubory a adresáři

  • delete(string|array $paths), move(string $path, string $target), copy(string $path, string $target) - CRUD essentials pro soubory.

  • link(string $target, string $link), relativeLink(string $target, string $link) - Vytváření absolutních nebo relativních symlinků.

  • Operace s adresáři:

    • ensureDirectoryExists(string $path, int $mode = 0755, bool $recursive = true)
    • makeDirectory(string $path, int $mode = 0755, bool $recursive = false, bool $force = false)
    • moveDirectory(string $from, string $to, bool $overwrite = false)
    • copyDirectory(string $directory, string $destination, int|null $options = null)
    • deleteDirectory(string $directory, bool $preserve = false)
    • deleteDirectories(string $directory)
    • cleanDirectory(string $directory) - Všechny nástroje pro bezpečné vytváření, kopírování, přesouvání, čištění nebo odstraňování adresářů.

Porovnávání vzorů a seznamy

  • glob(string $pattern, int $flags) - Vyhledávání podle vzorů.
  • files(string $directory, bool $hidden = false) / allFiles(string $directory, bool $hidden = false) - Seznam souborů, volitelně včetně skrytých.
  • directories(string $directory) - Seznam podadresářů.

Podmíněná logika a rozšiřitelnost

  • when(...), unless(...) - Podmíněné pracovní postupy pro operace se soubory.

  • Podpora systému maker Laravel:

    • macro(...), mixin(...), hasMacro(...), flushMacros() - Přidání nebo správa vlastního chování za běhu.

Nástroje pro testování a fasády

Metody zděděné ze základu Facade třída:

  • resolved(), spy(), partialMock(), shouldReceive(), expects(), swap(), isFake(), getFacadeRoot(), getFacadeAccessor(), resolveFacadeInstance() - užitečné při testování a testování.

Příklady kódu s použitím fasády souboru

// Stream file safely
File::lines($path)->each(fn($line) => process($line));
 
// Lock‑safe write
File::put($path, $contents, true);
 
// Parse JSON
$data = File::json($configFile, JSON_THROW_ON_ERROR, true);
 
// Inline replacements
File::replaceInFile('TODO', 'DONE', $filePath);
 
// Directory management
File::ensureDirectoryExists($dirPath);
File::cleanDirectory($dirPath);
 
// Symlinks
File::link($targetFile, $symlink);
 
// Custom macro
File::macro('duplicateAndDelete', function ($path) {
File::copy($path, $path.'.dup');
File::delete($path);
});

Proč File Fasáda si zaslouží vaši pozornost

Případ použití Benefit
Streamování šetřící zdroje lines() zabraňuje nárazům paměti u velkých souborů
Bezpečnější souběžné operace Uzamykatelné čtení/zápisy snižují rizika závodních stavů
Pohodlná manipulace s obsahem souborů Inline vyhledávání/nahrazování, prepend/append zjednodušují vzory
Robustní zpracování adresářů Jednověté věty jako ensureDirectoryExists() udržovat kód čistý
Vlastní pracovní postupy macro() a when() umožňuje elegantně přizpůsobit logiku souborů
Těsně testovatelné Plně se integruje s nástroji Laravel mocking prostřednictvím fasády

Chcete úplný přehled?

Přejděte do oficiálních dokumentů API Laravel, kde naleznete File fasádu, abyste vše podrobně prozkoumali:

Illuminate\Support\Facades\File - Laravel API (v12.x)

Původní článek publikoval Nabil Hassen.