SPL-StandardPHPLibrary
Public Member Functions | Public Attributes | Protected Member Functions | Private Attributes
CallbackFilterIterator Class Reference
Inheritance diagram for CallbackFilterIterator:
Inheritance graph
[legend]
Collaboration diagram for CallbackFilterIterator:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 __call ($func, $params)
 __construct (Iterator $it, $callback, $mode=self::USE_VALUE, $flags=0)
 accept ()
 current ()
 getFlags ()
 getInnerIterator ()
 getMode ()
 key ()
 next ()
 rewind ()
 setFlags ($flags)
 setMode ($mode)
 valid ()

Public Attributes

const REPLACE = 0x00000001
const USE_BOTH = 4
const USE_FALSE = 0
const USE_KEY = 3
const USE_TRUE = 1
const USE_VALUE = 2

Protected Member Functions

 __clone ()
 fetch ()

Private Attributes

 $callback
 $current
 $flags
 $key
 $mode

Detailed Description

A non abstract FiletrIterator that uses a callback foreach element.

Author:
Marcus Boerger
Kevin McArthur
Version:
1.0

Definition at line 19 of file callbackfilteriterator.inc.


Constructor & Destructor Documentation

CallbackFilterIterator::__construct ( Iterator it,
callback,
mode = self::USE_VALUE,
flags = 0 
)

Construct a CallbackFilterIterator.

Parameters:
itinner iterator (iterator to filter)
callbackcallback function
modeany of USE_VALUE, USE_KEY, USE_BOTH
flagsany of 0, REPLACE

Definition at line 42 of file callbackfilteriterator.inc.

References $callback, $flags, and $mode.

    {
        parent::__construct($it);
        $this->callback = $callback;
        $this->mode     = $mode;
        $this->flags    = $flags;
    }

Member Function Documentation

FilterIterator::__call ( func,
params 
) [inherited]

Aggregate the inner iterator.

Parameters:
funcName of method to invoke
paramsArray of parameters to pass to method

Reimplemented in SearchIterator.

Definition at line 121 of file filteriterator.inc.

    {
        return call_user_func_array(array($this->it, $func), $params);
    }
FilterIterator::__clone ( ) [protected, inherited]

hidden __clone

Reimplemented in KeyFilter.

Definition at line 104 of file filteriterator.inc.

                                 {
        // disallow clone 
    }
CallbackFilterIterator::accept ( )

Call the filter callback.

Returns:
result of filter callback

Reimplemented from FilterIterator.

Definition at line 53 of file callbackfilteriterator.inc.

References current(), key(), and USE_FALSE.

    {
        $this->key     = parent::key();
        $this->current = parent::current();

        switch($this->mode) {
        default:
        case self::USE_FALSE;
            return false;
        case self::USE_TRUE:
            return true;
        case self::USE_VALUE:
            if($this->flags & self::REPLACE) {
                return (bool) call_user_func($this->callback, &$this->current);
            } else {
                return (bool) call_user_func($this->callback, $this->current);
            }
        case self::USE_KEY:
            if($this->flags & self::REPLACE) {
                return (bool) call_user_func($this->callback, &$this->key);
            } else {
                return (bool) call_user_func($this->callback, $this->key);
            }
        case SELF::USE_BOTH:
            if($this->flags & self::REPLACE) {
                return (bool) call_user_func($this->callback, &$this->key, &$this->current);
            } else {
                return (bool) call_user_func($this->callback, $this->key, $this->current);
            }
        }
    }

Here is the call graph for this function:

CallbackFilterIterator::current ( )
Returns:
current value

Reimplemented from FilterIterator.

Definition at line 92 of file callbackfilteriterator.inc.

Referenced by accept().

    {
        return $this->current;
    }
FilterIterator::fetch ( ) [protected, inherited]

Fetch next element and store it.

Returns:
void

Definition at line 61 of file filteriterator.inc.

References FilterIterator\accept().

Referenced by FilterIterator\next(), and FilterIterator\rewind().

                               {
        while ($this->it->valid()) {
            if ($this->accept()) {
                return;
            }
            $this->it->next();
        };
    }

Here is the call graph for this function:

CallbackFilterIterator::getFlags ( )
Returns:
operation flags

Definition at line 110 of file callbackfilteriterator.inc.

    {
        return $this->flags;
    }
FilterIterator::getInnerIterator ( ) [inherited]
CallbackFilterIterator::getMode ( )
Returns:
operation mode

Definition at line 98 of file callbackfilteriterator.inc.

    {
        return $this->mode;
    }
CallbackFilterIterator::key ( )
Returns:
current key value

Reimplemented from FilterIterator.

Definition at line 86 of file callbackfilteriterator.inc.

Referenced by accept().

    {
        return $this->key;
    }
FilterIterator::next ( ) [inherited]

Move to next element.

Returns:
void

Implements Iterator.

Reimplemented in SearchIterator.

Definition at line 75 of file filteriterator.inc.

References FilterIterator\fetch().

                    {
        $this->it->next();
        $this->fetch();
    }

Here is the call graph for this function:

FilterIterator::rewind ( ) [inherited]

Rewind the inner iterator.

Implements Iterator.

Reimplemented in SearchIterator.

Definition at line 42 of file filteriterator.inc.

References FilterIterator\fetch().

                      { 
        $this->it->rewind();
        $this->fetch();
    }

Here is the call graph for this function:

CallbackFilterIterator::setFlags ( flags)
Parameters:
$flagsset new flags,
See also:
flags

Definition at line 116 of file callbackfilteriterator.inc.

References $flags.

    {
        $this->flags = $flags;
    }
CallbackFilterIterator::setMode ( mode)
Parameters:
$modeset new mode,
See also:
mode

Definition at line 104 of file callbackfilteriterator.inc.

References $mode.

    {
        $this->mode = $mode;
    }
FilterIterator::valid ( ) [inherited]
Returns:
Whether more elements are available

Implements Iterator.

Reimplemented in SearchIterator.

Definition at line 83 of file filteriterator.inc.

                     {
        return $this->it->valid();
    }

Member Data Documentation

CallbackFilterIterator::$callback [private]

callback to use

Definition at line 29 of file callbackfilteriterator.inc.

Referenced by __construct().

CallbackFilterIterator::$current [private]

current value

Definition at line 33 of file callbackfilteriterator.inc.

CallbackFilterIterator::$flags [private]

flags (REPLACE)

Definition at line 31 of file callbackfilteriterator.inc.

Referenced by __construct(), and setFlags().

CallbackFilterIterator::$key [private]

key value

Definition at line 32 of file callbackfilteriterator.inc.

CallbackFilterIterator::$mode [private]

mode any of USE_VALUE, USE_KEY, USE_BOTH

Definition at line 30 of file callbackfilteriterator.inc.

Referenced by __construct(), and setMode().

const CallbackFilterIterator::REPLACE = 0x00000001

flag: pass key/value by reference

Definition at line 27 of file callbackfilteriterator.inc.

mode: pass value and key to callback

Definition at line 25 of file callbackfilteriterator.inc.

mode: accept no elements, no callback

Definition at line 21 of file callbackfilteriterator.inc.

Referenced by accept().

mode: pass key to callback

Definition at line 24 of file callbackfilteriterator.inc.

mode: accept all elements, no callback

Definition at line 22 of file callbackfilteriterator.inc.

mode: pass value to callback

Definition at line 23 of file callbackfilteriterator.inc.


The documentation for this class was generated from the following file: