public static function purge($path = null, array &$logs = array())
    {
        if (is_null($path)) {
            return null;
        }
        if (file_exists($path) && is_dir($path)) {
            $iterator = new \RecursiveIteratorIterator(
                new \RecursiveDirectoryIterator($path), 
                \RecursiveIteratorIterator::SELF_FIRST | \FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::SKIP_DOTS
            );
            foreach ($iterator as $item) {
                if (in_array($item->getFilename(), array('.', '..'))) {
                    continue;
                }
                $_path = $item->getRealpath();
                if (array_key_exists($_path, $logs)) {
                    return false;
                }
                if ($item->isDir()) {
                    if (false===($ok = self::remove($_path, $logs))) {
                        $logs[$_path] = sprintf('Can not remove diretory "%s".', $_path);
                    }
                } else {
                    if (false===($ok = File::remove($_path, $logs))) {
                        $logs[$_path] = sprintf('Can not unlink file "%s".', $_path);
                    }
                }
            } 
            clearstatcache();
            return $ok;
        } else {
            $logs[$path] = sprintf('Directory "%s" not found.', $path);
        }
        return false;
    }