PHP递归目录迭代器 – 忽略某些文件.

我有一个递归目录迭代器来从目录中选择文件. SKIP_DOTS允许我忽略’.’和’..’元素,但我希望能够忽略’__MACOSX’目录和另一个其他隐藏文件,如’.cache.PHP
$iterator = new RecursiveDirectoryIterator($directory);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$all_files  = new RecursiveIteratorIterator($iterator);

还有其他答案herehere,但只是想知道是否有更清洁的方式?

我希望PHP Manual – FilesystemIterator SetFlags会有什么东西,但似乎没有.

感谢@sven和PHP Docs:
$iterator = new RecursiveDirectoryIterator($directory);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);

$filter = new MyRecursiveFilterIterator($iterator);

$all_files  = new RecursiveIteratorIterator($filter,RecursiveIteratorIterator::SELF_FirsT);

然后延长RecursiveFilterIterator

class MyRecursiveFilterIterator extends RecursiveFilterIterator {

    public static $FILTERS = array(
        '__MACOSX',);

    public function accept() {
        return !in_array(
            $this->current()->getFilename(),self::$FILTERS,true
        );
    }

}

根据评论In the PHP Manual

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...