- mkdir: documentation ( source)
- touch: documentation ( source)
- sprintf: documentation ( source)
<?php
$dir = '/tmp/test';
@mkdir($dir, 0777, true);
touch($dir . '/.anyhidden'); // like .DS_Store on mac...
@mkdir($dir . '/mydir');
class DirFilterIterator extends \FilterIterator
{
public function accept()
{
if ($this->current()->isDir()) {
return true;
}
return false;
}
}
$flags = \FilesystemIterator::KEY_AS_PATHNAME |
\FilesystemIterator::CURRENT_AS_FILEINFO;
$flags |= \FilesystemIterator::SKIP_DOTS; // uncomment this line to see the bug?
$it = new \RecursiveDirectoryIterator($dir, $flags);
$rit = new \RecursiveIteratorIterator($it, \RecursiveIteratorIterator::SELF_FIRST, 0);
$rit = new DirFilterIterator($rit);
$iterator = new \AppendIterator();
$iterator->append($rit);
foreach ($iterator as $f) {
/**
* @var \SplFileInfo $f
*/
if ('.' !== $f->getBasename() && '..' !== $f->getBasename()) {
echo sprintf('pathname: %s, filename: %s', $f->getPathname(), $f->getFilename());
echo '<br />';
}
}