• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • RecursiveDirectoryIterator::__construct()

    (PHP 5 >= 5.1.2, PHP 7)

    Constructs a RecursiveDirectoryIterator

    说明

    publicRecursiveDirectoryIterator::__construct(string $path[,int $flags= FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO] )

    Constructs a RecursiveDirectoryIterator() for the provided $path.

    参数

    $path

    The path of the directory to be iterated over.

    $flags

    Flags may be provided which will affect the behavior of some methods. A list of the flags can found under FilesystemIterator predefined constants. They can also be set later with FilesystemIterator::setFlags().

    返回值

    Returns the newly created RecursiveDirectoryIterator.

    错误/异常

    Throws an UnexpectedValueException if the $path cannot be found or is not a directory.

    范例

    RecursiveDirectoryIterator example

    <?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();
    }
    ?>
    

    以上例程的输出类似于:

    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
    

    参见

    • FilesystemIterator::__construct() Constructs a new filesystem iterator
    • RecursiveIteratorIterator::__construct() Construct a RecursiveIteratorIterator
    • FilesystemIterator predefined constants
    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.]
    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
    );
    ?>