RecursiveDirectoryIterator::__construct()
(PHP 5 >= 5.1.2, PHP 7)
Constructs a RecursiveDirectoryIterator
说明
public RecursiveDirectoryIterator::__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 ); ?>