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í aLazyCollection- 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 safelyFile::lines($path)->each(fn($line) => process($line)); // Lock‑safe writeFile::put($path, $contents, true); // Parse JSON$data = File::json($configFile, JSON_THROW_ON_ERROR, true); // Inline replacementsFile::replaceInFile('TODO', 'DONE', $filePath); // Directory managementFile::ensureDirectoryExists($dirPath);File::cleanDirectory($dirPath); // SymlinksFile::link($targetFile, $symlink); // Custom macroFile::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: