Maison  >  Article  >  développement back-end  >  Introduction à l'utilisation de mkdir en php

Introduction à l'utilisation de mkdir en php

王林
王林avant
2020-01-31 21:11:153334parcourir

Introduction à l'utilisation de mkdir en php

Comment PHPmkdir crée un répertoire multi-niveaux

Tout d'abord, expliquons que de nombreux amis peuvent penser que mkdir peut créer des fichiers tant comme ils donnent un chemin de dossier, en fait, ce n'est pas comme ça. Un seul MKDIR ne peut créer que des répertoires à un niveau, mais pas des répertoires à plusieurs niveaux. Alors, comment utiliser mkdir pour le créer ?

La description de mkdir dans le manuel est la suivante :

Explication

bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

Essayez de créer un nouveau répertoire spécifié par chemin.

Remarque : vous souhaiterez peut-être spécifier le mode en utilisant un nombre octal, ce qui signifie que le nombre doit commencer par zéro. Le mode sera également modifié par l'umask actuel, qui peut être modifié avec umask().

Remarque : le mode est ignoré sous Windows. Facultatif depuis PHP 4.2.0.

Le mode par défaut est 0777, ce qui signifie un accès maximum possible. Pour plus d'informations sur le mode, veuillez lire la page chmod().

(Tutoriel vidéo d'apprentissage gratuit recommandé : Tutoriel vidéo php)

Exemple 1. Exemple mkdir()

<?php
mkdir("/path/to/my/dir", 0700);
?>

Renvoie VRAI en cas de succès, en cas d'échec Renvoie FAUX.

Remarque : depuis PHP 5.0.0, rmdir() peut également être utilisé avec certains protocoles d'encapsulation d'URL. Voir l'Annexe N pour une liste des protocoles d'encapsulation d'URL pris en charge par rmdir().

Remarque : la prise en charge du contexte a été ajoutée dans PHP 5.0.0. Pour une description du contexte, voir Référence CLX, Fonctions Stream.

Remarque : Le paramètre récursif a été ajouté dans PHP 5.0.0.

Remarque : Lorsque le mode sans échec est activé, PHP vérifiera si le répertoire manipulé a le même UID (propriétaire) que le script en cours d'exécution.

Ce qui précède correspond aux informations de description dans le manuel PHP5, c'est-à-dire que vous pouvez créer un dossier comme celui-ci : mkdir('./test',0777). Mais comment créer des répertoires multi-niveaux de manière récursive ?

Les méthodes sont :

1. La fonction de création de répertoire mkdir sous PHP5 ajoute un nouveau paramètre récursif En définissant récursif sur true, l'objectif de création récursive d'un répertoire peut être atteint, mais cela. ne fonctionne pas pour PHP4.

2. Écrivez votre propre méthode récursive pour créer des répertoires multi-niveaux.

Ici, je vais expliquer la deuxième méthode. Il existe deux méthodes, comme suit :

La première (utiliser mkdirs pour générer des parents multi-niveaux)

function mkdirs($dir, $mode = 0777)
{    
if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;    
if (!mkdirs(dirname($dir), $mode)) return FALSE;    
return @mkdir($dir, $mode);
}

Explication :
1. Tout d'abord, parlons brièvement de la différence entre mkdir() et mkdirs(), ainsi que is_dir et dirname() :

mkdir() ne peut créer des fichiers que dans le dossier des répertoires existants (. c'est-à-dire que le parent doit l'avoir).

mkdirs() peut créer des dossiers dans des répertoires inexistants. Par exemple : a//b, vous pouvez créer des répertoires multi-niveaux.

dirname() renvoie la partie répertoire du chemin.

is_dir() est utilisé pour déterminer si le nom de fichier donné est un répertoire valide ou un dossier, renvoie VRAI si c'est le cas. S'il n'existe pas (ou s'il ne s'agit pas d'un dossier), essayez de le créer. Bien sûr, le parent peut ne pas exister et mkdir ne sera pas créé avec succès, mais il ne signalera pas d'erreur, utilisez donc @ pour supprimer les non-dossiers. erreurs fatales.

(2) Si aucun des paramètres transmis ne remplit les conditions, entrez la deuxième instruction if. Tout d'abord, obtenez la partie répertoire du chemin. Bien sûr, il peut s'agir d'un parent à plusieurs niveaux qui ne le fait pas. existe, donc mkdirs est utilisé () pour créer d'abord le parent en cas de succès (renvoie FALSE en cas d'échec), puis utilisez mkdir pour créer le répertoire final.

D'accord, ce qui précède est la première option.

Deuxième type (Remarque : cette solution est assez simple, c'est une assez bonne solution, il est recommandé de l'utiliser)

function create_folders($dir){
       return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));
 }

Explication : 1 Processus approximatif : Après avoir obtenu le chemin, jugez d'abord S'il s'agit déjà d'un répertoire de fichiers valide, si c'est le cas, retournez et terminez le programme. Sinon, (parce que OR est utilisé ici comme condition sélective, c'est-à-dire tant qu'une des conditions est remplie), il s'appellera de manière récursive et il y aura un répertoire de moins dans le chemin transmis. De cette façon, revenez d'abord au répertoire parent du niveau supérieur, puis utilisez mkdir pour créer le niveau suivant.

D'accord, ce qui précède explique comment créer des dossiers (et des dossiers à plusieurs niveaux) en utilisant PHP. ^_^

Résumé :

1. Utilisez un nouveau paramètre récursif dans mkdir fourni avec PHP5 En définissant récursif sur true, vous pouvez atteindre l'objectif de création récursive de répertoires, mais pour PHP4. Cela ne marchera pas.

2. Dans ma propre méthode, utilisez mkdirs pour créer des répertoires parents à plusieurs niveaux

3. Utilisez toujours mkdir pour le créer très intelligemment

Tutoriels d'articles connexes recommandés :<.>Tutoriel php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer