PHPerKaigi 2021

RecursiveDirectoryIterator::__construct

(PHP 5 >= 5.1.2, PHP 7)

RecursiveDirectoryIterator::__constructConstruit un objet RecursiveDirectoryIterator

Description

public RecursiveDirectoryIterator::__construct ( string $path , int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO )

Construit un objet RecursiveDirectoryIterator() concernant le dossier souhaité.

Liste de paramètres

path

Chemin du dossier sur lequel itérer.

flags

Drapeaux à passer pour changer le comportement de l'itérateur. Une liste de drapeaux peut être trouvée dans la liste des constantes de FilesystemIterator. Elles peuvent aussi être renseignées plus tard au moyen de FilesystemIterator::setFlags()

Valeurs de retour

Retourne l'instance créee de RecursiveDirectoryIterator.

Erreurs / Exceptions

Envoie une UnexpectedValueException si le path n'est pas accessible ou n'est pas un dossier.

Exemples

Exemple #1 Exemple avec RecursiveDirectoryIterator

<?php

$directory 
'/tmp';

$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

$it->rewind();
while(
$it->valid()) {

    if (!
$it->isDot()) {
        echo 
'SubPathName: ' $it->getSubPathName() . "\n";
        echo 
'SubPath:     ' $it->getSubPath() . "\n";
        echo 
'Key:         ' $it->key() . "\n\n";
    }

    
$it->next();
}

?>

Résultat de l'exemple ci-dessus est similaire à :

SubPathName: fruit/apple.xml
SubPath:     fruit
Key:         /tmp/fruit/apple.xml

SubPathName: stuff.xml
SubPath:     
Key:         /tmp/stuff.xml

SubPathName: veggies/carrot.xml
SubPath:     veggies
Key:         /tmp/veggies/carrot.xml

Voir aussi

add a note add a note

User Contributed Notes 2 notes

up
3
pedro dot matamouros at gmail dot com
10 years ago
You can use RecursiveDirectoryIterator::FOLLOW_SYMLINKS as a flag to the constructor to have RecursiveDirectoryIterator follow symlinks, which it does not do by default.

[EDIT BY danbrown AT php DOT net on 16-JUL-2012: Contains a typofix provided by (lightrekky AT gmail DOT com) in note #109280 on 02-JUL-2012.]
up
1
hanskrentel at yahoo dot de
8 years ago
The two default flags are zero (virtual) as with my PHP versions (5.3 and 5.4). Which means you can not check if those are set or not with the & bitwise operator:

<?php
// CURRENT_AS_FILEINFO (0)
// KEY_AS_PATHNAME (0)

### always FALSE ###
$directoryIterator->getFlags() & RecursiveDirectoryIterator::CURRENT_AS_FILEINFO;

?>

But this also allows that you can use other flags right ahead without repeating the default ones:

<?php
new RecursiveDirectoryIterator(
   
'.',
   
FilesystemIterator::UNIX_PATHS
);
?>

There is no need to repeat the default flags. Please note that this is different to FilesystemIterator which has as well the SKIP_DOTS flag as default which is non-zero:

<?php
new RecursiveDirectoryIterator(
   
'.',
   
FilesystemIterator::SKIP_DOTS
       
| FilesystemIterator::UNIX_PATHS
);
?>
To Top