PHP:
Controleren of een directory bestaat
Hoe te:
In PHP controleert is_dir()
of een directory bestaat:
$directory = "/pad/naar/dir";
if (is_dir($directory)) {
echo "De directory bestaat.";
} else {
echo "De directory bestaat niet.";
}
Voorbeelduitvoer:
De directory bestaat.
Of, als de directory inderdaad niet bestaat:
De directory bestaat niet.
Om fouten te onderdrukken en een gedetailleerdere controle te gebruiken, combineer je is_dir()
met de functie file_exists()
:
$directory = "/pad/naar/dir";
if (file_exists($directory) && is_dir($directory)) {
echo "De directory bestaat en is een map.";
} else {
echo "De directory bestaat niet of is een bestand.";
}
Diepere duik
is_dir()
bestaat in PHP sinds versie 4.0.0, wat het mogelijk maakt om voorafgaand aan operaties die kunnen falen of fouten kunnen opleveren, te controleren op het bestaan van mappen. Niet te verwarren met file_exists()
, wat zowel voor bestanden als mappen controleert, is_dir()
is specifiek voor mappen.
Voordat deze ingebouwde functies bestonden, konden programmeurs opendir()
hebben gebruikt en gecontroleerd of er een false retourwaarde was om niet-bestaan af te leiden. Dit was minder efficiënt en foutgevoeliger.
Onder de motorkap voert is_dir()
een syscall uit naar het onderliggende bestandssysteem, wat kostbaarder kan zijn in termen van I/O-bewerkingen, vooral voor externe of virtuele bestandssystemen. Het cachen van resultaten of het structureren van code om bestaanscontroles te minimaliseren kan prestaties optimaliseren.
Een alternatief, vooral relevant in Unix-achtige systemen, is het gebruik van exec()
met een systeemcommando zoals ls
of test -d
, maar dit introduceert de overhead van het aanroepen van een shell en is minder draagbaar.