Třída FileInfo
Utility pro načítání metainformací o souborech. Statická třída s metodami pro zjištění velikosti, oprávnění, vlastníka a času změny.
Klíčové metody
| Metoda | Popis |
|---|---|
getFileInfo(string $source): array |
Vrať všechny metainformace |
getFileSize(string $source): int\|float |
Vrať velikost v bytech |
getReadableSize(float\|int $size, ?string $format = null): string |
Vrať velikost čitelně |
formatSize(float\|int $size, ?string $format = null): string |
Formátuj velikost s jednotkami |
getReadablePerms(string $file): string |
Vrať oprávnění v Unix notaci |
getOwner(string $file): string\|false |
Vrať jméno vlastníka |
getGroup(string $file): string\|false |
Vrať jméno skupiny |
datetime(string $file): string |
Vrať čas modifikace |
Metody
FileInfo::getFileInfo(string $source): array
Vrátí všechny metainformace o souboru v jednom volání.
Návratová hodnota:
[
'datetime' => '01.01.2024 14:30', // Formátovaný čas
'size' => '2.50 MB', // Čitelná velikost
'owner' => 'www-data', // Vlastník (nebo false na Windows)
'group' => 'www-data', // Skupina (nebo false na Windows)
'perms' => '-rw-r--r--', // Unix notace
]
Příklad:
use Petrovo\FileSystem\FileInfo;
$info = FileInfo::getFileInfo('/var/www/document.pdf');
echo $info['size']; // 2.50 MB
echo $info['perms']; // -rw-r--r--
echo $info['owner']; // www-data
FileInfo::getFileSize(string $source): int|float
Vrátí velikost souboru v bytech.
Návratová hodnota:
- Počet bajtů
Příklad:
use Petrovo\FileSystem\FileInfo;
$bytes = FileInfo::getFileSize('/var/www/file.pdf');
echo $bytes; // 2621440 (pro 2.5 MB)
FileInfo::getReadableSize(float|int $size, ?string $format = null): string
Konvertuje velikost v bytech na čitelný formát.
Parametry:
$size– velikost v bytech$format(optional) – sprintf format string (default:'%01.2f %s')
Návratová hodnota:
- Formátovaný string (např.
'2.50 MB')
Příklad:
use Petrovo\FileSystem\FileInfo;
echo FileInfo::getReadableSize(1024); // 1 kB
echo FileInfo::getReadableSize(1048576); // 1 MB
echo FileInfo::getReadableSize(2621440); // 2.50 MB
// Vlastní formát
echo FileInfo::getReadableSize(2621440, '%.1f %s'); // 2.5 MB
FileInfo::formatSize(float|int $size, ?string $format = null): string
Formátuje velikost se správnými jednotkami.
Jednotky:
- B (baity)
- kB (kilobaity)
- MB (megabaity)
- GB (gigabaity)
- TB, PB, EB, ZB, YB
Chování:
- Pro celé číslo vrací bez desetinných míst (např.
5 MB) - Pro desetinná čísla vrací s 2 místy (např.
2.50 MB)
Parametry:
$size– velikost v bytech$format– sprintf format (default:'%01.2f %s')
Příklad:
use Petrovo\FileSystem\FileInfo;
echo FileInfo::formatSize(512); // 512 B
echo FileInfo::formatSize(1024); // 1 kB
echo FileInfo::formatSize(1024 * 1024); // 1 MB
echo FileInfo::formatSize(1536 * 1024); // 1.50 MB
FileInfo::getReadablePerms(string $file): string
Vrátí oprávnění souboru v Unix notaci (jako ls -l).
Formát:
- První znak: typ (
-file,ddir,llink, atd.) - Znaky 2-4: owner (rwx)
- Znaky 5-7: group (rwx)
- Znaky 8-10: others (rwx)
Příklad:
use Petrovo\FileSystem\FileInfo;
echo FileInfo::getReadablePerms('/var/www/file.txt'); // -rw-r--r--
echo FileInfo::getReadablePerms('/var/www'); // drwxr-xr-x
FileInfo::getOwner(string $file): string|false
Vrátí jméno vlastníka souboru.
Poznámka: Na Windows vrátí false (funkce POSIX nejsou dostupné).
Návratová hodnota:
- Jméno vlastníka (string) nebo
falsepokud není dostupné
Příklad:
use Petrovo\FileSystem\FileInfo;
$owner = FileInfo::getOwner('/var/www/file.txt');
echo $owner; // www-data (nebo false na Windows)
FileInfo::getGroup(string $file): string|false
Vrátí jméno skupiny souboru.
Poznámka: Na Windows vrátí false.
Návratová hodnota:
- Jméno skupiny (string) nebo
falsepokud není dostupné
Příklad:
use Petrovo\FileSystem\FileInfo;
$group = FileInfo::getGroup('/var/www/file.txt');
echo $group; // www-data (nebo false na Windows)
FileInfo::datetime(string $file): string
Vrátí čas poslední modifikace souboru.
Formát: 'd.m.Y H:i' (např. '15.01.2024 14:30')
Příklad:
use Petrovo\FileSystem\FileInfo;
echo FileInfo::datetime('/var/www/file.txt'); // 15.01.2024 14:30
Praktické příklady
Výpis informací o souboru
use Petrovo\FileSystem\FileInfo;
$file = '/var/www/document.pdf';
$info = FileInfo::getFileInfo($file);
echo "Soubor: document.pdf\n";
echo "Velikost: " . $info['size'] . "\n";
echo "Oprávnění: " . $info['perms'] . "\n";
echo "Vlastník: " . ($info['owner'] ?? 'N/A') . "\n";
echo "Skupina: " . ($info['group'] ?? 'N/A') . "\n";
echo "Upraveno: " . $info['datetime'] . "\n";
Kontrola velikosti souboru
use Petrovo\FileSystem\FileInfo;
$file = '/var/www/upload.zip';
$size = FileInfo::getFileSize($file);
if ($size > 100 * 1024 * 1024) { // > 100 MB
echo "Soubor je příliš velký!";
} else {
echo "Velikost: " . FileInfo::getReadableSize($size);
}
Výpis oprávnění
use Petrovo\FileSystem\FileInfo;
$perms = FileInfo::getReadablePerms('/var/www/file.txt');
// Vrátí: '-rw-r--r--'
// Rozebírání:
// - : regular file
// rw- : owner může číst a psát
// r-- : group může jen číst
// r-- : others mohou jen číst
Shrnutí
Třída FileInfo je určena pro čtení metainformací. Všechny metody jsou read-only. Pro změnu oprávnění používej FileSystem::changePermissions().