Controleren of een directory bestaat

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.

Zie ook