# The FilesystemIterator class

(PHP 5 >= 5.3.0, PHP 7)

## Introduction

The Filesystem iterator

## Class synopsis

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