# The FilesystemIterator class

(PHP 5 >= 5.3.0, PHP 7)

## Introduction

The Filesystem iterator

## Class synopsis

FilesystemIterator extends DirectoryIterator implements SeekableIterator {
/* Constants */
const int CURRENT_AS_PATHNAME = 32 ;
const int CURRENT_AS_FILEINFO = 0 ;
const int CURRENT_AS_SELF = 16 ;
const int CURRENT_MODE_MASK = 240 ;
const int KEY_AS_PATHNAME = 0 ;
const int KEY_AS_FILENAME = 256 ;
const int FOLLOW_SYMLINKS = 512 ;
const int KEY_MODE_MASK = 3840 ;
const int NEW_CURRENT_AND_KEY = 256 ;
const int SKIP_DOTS = 4096 ;
const int UNIX_PATHS = 8192 ;
/* Methods */
public __construct ( string `$path` [, int `$flags` = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS ] )
public current ( ) : mixed
public getFlags ( ) : int
public key ( ) : string
public next ( ) : void
public rewind ( ) : void
public setFlags ([ int `$flags` ] ) : void
/* Inherited methods */
public DirectoryIterator::current ( ) : DirectoryIterator
public DirectoryIterator::getATime ( ) : int
public DirectoryIterator::getBasename ([ string `$suffix` ] ) : string
public DirectoryIterator::getCTime ( ) : int
public DirectoryIterator::getExtension ( ) : string
public DirectoryIterator::getFilename ( ) : string
public DirectoryIterator::getGroup ( ) : int
public DirectoryIterator::getInode ( ) : int
public DirectoryIterator::getMTime ( ) : int
public DirectoryIterator::getOwner ( ) : int
public DirectoryIterator::getPath ( ) : string
public DirectoryIterator::getPathname ( ) : string
public DirectoryIterator::getPerms ( ) : int
public DirectoryIterator::getSize ( ) : int
public DirectoryIterator::getType ( ) : string
public DirectoryIterator::isDir ( ) : bool
public DirectoryIterator::isDot ( ) : bool
public DirectoryIterator::isExecutable ( ) : bool
public DirectoryIterator::isFile ( ) : bool
public DirectoryIterator::isLink ( ) : bool
public DirectoryIterator::isReadable ( ) : bool
public DirectoryIterator::isWritable ( ) : bool
public DirectoryIterator::key ( ) : string
public DirectoryIterator::next ( ) : void
public DirectoryIterator::rewind ( ) : void
public DirectoryIterator::seek ( int `$position` ) : void
public DirectoryIterator::__toString ( ) : string
public DirectoryIterator::valid ( ) : bool
}

## Predefined Constants

`FilesystemIterator::CURRENT_AS_PATHNAME`

  Makes FilesystemIterator::current() return the pathname.

`FilesystemIterator::CURRENT_AS_FILEINFO`

  Makes FilesystemIterator::current() return an SplFileInfo instance.

`FilesystemIterator::CURRENT_AS_SELF`

  Makes FilesystemIterator::current() return $this (the FilesystemIterator).

`FilesystemIterator::CURRENT_MODE_MASK`

  Masks FilesystemIterator::current()

`FilesystemIterator::KEY_AS_PATHNAME`

  Makes FilesystemIterator::key() return the pathname.

`FilesystemIterator::KEY_AS_FILENAME`

  Makes FilesystemIterator::key() return the filename.

`FilesystemIterator::FOLLOW_SYMLINKS`

  Makes RecursiveDirectoryIterator::hasChildren() follow symlinks.

`FilesystemIterator::KEY_MODE_MASK`

  Masks FilesystemIterator::key()

`FilesystemIterator::NEW_CURRENT_AND_KEY`

  Same as `FilesystemIterator::KEY_AS_FILENAME | FilesystemIterator::CURRENT_AS_FILEINFO`.

`FilesystemIterator::SKIP_DOTS`

  Skips dot files (`.` and `..`).

`FilesystemIterator::UNIX_PATHS`

  Makes paths use Unix-style forward slash irrespective of system default. Note that the `path` that is passed to the constructor is not modified.

## Changelog

Version | Description
--- | ---
5.3.1 | Added `FilesystemIterator::FOLLOW_SYMLINKS`

## Table of Contents

- FilesystemIterator::__construct — Constructs a new filesystem iterator
- FilesystemIterator::current — The current file
- FilesystemIterator::getFlags — Get the handling flags
- FilesystemIterator::key — Retrieve the key for the current file
- FilesystemIterator::next — Move to the next file
- FilesystemIterator::rewind — Rewinds back to the beginning
- FilesystemIterator::setFlags — Sets handling flags