Jeśli kiedykolwiek pracowałeś z plikami w PHP, prawdopodobnie zastanawiałeś się, jak sprawdzić, czy dany plik istnieje i czy rzeczywiście jest plikiem (a nie katalogiem czy symbolicznym linkiem). Tutaj do akcji wchodzi funkcja is_file
. W tym artykule rozłożymy jej działanie na czynniki pierwsze, pokażemy przykłady jej zastosowań, a na koniec wspólnie stworzymy kilka praktycznych kodów, które mogą przydać się w realnych projektach.
Czym jest is_file
?
is_file
to funkcja w PHP, która pozwala sprawdzić, czy dany plik:
- Istnieje.
- Jest rzeczywiście plikiem, a nie np. katalogiem czy symbolicznym linkiem.
Zwraca wartość true, jeśli wskazany przez nas ścieżka odnosi się do pliku, oraz false, jeśli:
- Plik nie istnieje.
- Ścieżka prowadzi do katalogu lub innego elementu systemu plików.
Podstawowa składnia:
bool is_file ( string $filename )
Parametr:
$filename
– pełna lub względna ścieżka do pliku, który chcemy sprawdzić.
Zwracana wartość:
true
, jeśli wskazany plik istnieje i jest plikiem.false
w przeciwnym przypadku.
Kiedy warto używać is_file
?
is_file
przydaje się, gdy:
- Musisz upewnić się, że pracujesz na pliku, zanim spróbujesz go otworzyć, odczytać czy zmodyfikować.
- Chcesz odfiltrować pliki od katalogów w danym folderze.
- Tworzysz system zarządzania plikami i chcesz zminimalizować błędy (np. użytkownik próbuje operować na katalogu, ale aplikacja oczekuje pliku).
Przykłady użycia is_file
1. Sprawdzenie, czy plik istnieje
Najprostszy przykład to sprawdzenie, czy plik istnieje i jest plikiem.
<?php $file = 'example.txt'; if (is_file($file)) { echo "Plik '$file' istnieje i jest plikiem."; } else { echo "Plik '$file' nie istnieje lub nie jest plikiem."; } ?>
Co się tutaj dzieje?
- Jeśli plik
example.txt
istnieje w tym samym folderze co nasz skrypt, zobaczysz komunikat: Plik 'example.txt’ istnieje i jest plikiem. - W przeciwnym razie wyświetli się: Plik 'example.txt’ nie istnieje lub nie jest plikiem.
2. Filtrowanie plików w katalogu
Czasami mamy folder pełen plików i podkatalogów, a chcemy przepracować tylko pliki. Oto jak to zrobić:
<?php $folder = './moje_pliki'; if (is_dir($folder)) { $items = scandir($folder); foreach ($items as $item) { $fullPath = $folder . DIRECTORY_SEPARATOR . $item; if (is_file($fullPath)) { echo "Znaleziono plik: $item\n"; } } } else { echo "Podana ścieżka '$folder' nie jest katalogiem."; } ?>
Wyjaśnienie:
- Funkcja
scandir
zwraca wszystkie elementy w folderze, w tym także.
(bieżący katalog) i..
(katalog nadrzędny). - Każdy element jest sprawdzany za pomocą
is_file
. Jeśli to plik, jest wyświetlany. - Użycie
DIRECTORY_SEPARATOR
gwarantuje, że kod będzie działał zarówno na systemach Windows, jak i Linux.
3. Sprawdzanie pliku przed odczytem
Zawsze warto upewnić się, że plik istnieje, zanim zaczniemy go odczytywać.
<?php $filename = 'config.json'; if (is_file($filename)) { $content = file_get_contents($filename); echo "Zawartość pliku:\n$content"; } else { echo "Plik '$filename' nie istnieje lub nie jest plikiem."; } ?>
Co robi ten kod?
- Sprawdza, czy
config.json
jest faktycznym plikiem. - Jeśli tak, odczytuje jego zawartość za pomocą
file_get_contents
i wyświetla ją. - W przeciwnym razie wyświetla komunikat o błędzie.
4. Prosty skrypt do liczenia liczby plików w folderze
Wyobraź sobie, że masz folder i chcesz szybko policzyć, ile jest w nim plików. Możesz użyć poniższego kodu:
<?php $folder = './dokumenty'; $fileCount = 0; if (is_dir($folder)) { $items = scandir($folder); foreach ($items as $item) { if (is_file($folder . DIRECTORY_SEPARATOR . $item)) { $fileCount++; } } echo "Liczba plików w folderze '$folder': $fileCount"; } else { echo "Podana ścieżka '$folder' nie jest katalogiem."; } ?>
Pułapki i dobre praktyki
1. Nie myl is_file
z file_exists
file_exists
sprawdza, czy istnieje dowolny element systemu plików (plik, katalog, link symboliczny).is_file
dodatkowo weryfikuje, czy jest to rzeczywiście plik.
2. Uważaj na uprawnienia
Nawet jeśli plik istnieje, funkcja is_file
zwróci false
, jeśli PHP nie ma wystarczających uprawnień, aby uzyskać dostęp do jego właściwości.
3. Pracuj z pełnymi ścieżkami
Zawsze, gdy to możliwe, używaj pełnych ścieżek do plików, aby uniknąć nieporozumień związanych z bieżącym katalogiem roboczym.
Funkcja is_file
to prosty, ale potężny sposób na bezpieczną pracę z plikami w PHP. Dzięki niej możesz szybko zweryfikować, czy wskazana ścieżka prowadzi do pliku, co pozwala uniknąć wielu potencjalnych błędów w aplikacjach.
Jeśli dopiero zaczynasz przygodę z PHP i pracą z plikami, ćwicz na małych przykładach. Gdy poczujesz się pewnie, zacznij integrować te funkcje w swoich większych projektach. A jeśli coś pójdzie nie tak – pamiętaj, że każdy błąd to krok w stronę mistrzostwa!