Back to index

php5  5.3.10
Public Member Functions | Public Attributes | Private Attributes
RecursiveCachingIterator Class Reference

Cached recursive iteration over another Iterator. More...

Inheritance diagram for RecursiveCachingIterator:
Inheritance graph
[legend]
Collaboration diagram for RecursiveCachingIterator:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 __construct (RecursiveIterator $it, $flags=self::CALL_TOSTRING)
 Construct from another iterator.
 rewind ()
 Rewind Iterator.
 hasChildren ()
 getChildren ()
 next ()
 Forward to the next element.
 valid ()
 hasNext ()
 current ()
 key ()
 __call ($func, $params)
 Aggregate the inner iterator.
 __toString ()
 getInnerIterator ()

Public Attributes

const CALL_TOSTRING = 0x00000001
const CATCH_GET_CHILD = 0x00000002
const TOSTRING_USE_KEY = 0x00000010
const TOSTRING_USE_CURRENT = 0x00000020

Private Attributes

 $hasChildren
 $getChildren

Detailed Description

Cached recursive iteration over another Iterator.

Author:
Marcus Boerger
Version:
1.2
Since:
PHP 5.1
See also:
CachingIterator

Definition at line 20 of file recursivecachingiterator.inc.


Constructor & Destructor Documentation

RecursiveCachingIterator::__construct ( RecursiveIterator it,
flags = self::CALL_TOSTRING 
)

Construct from another iterator.

Parameters:
itIterator to cache
flagsBitmask:
  • CALL_TOSTRING (whether to call __toString() for every element)
  • CATCH_GET_CHILD (whether to catch exceptions when trying to get childs)

Definition at line 32 of file recursivecachingiterator.inc.

       {
              parent::__construct($it, $flags);
       }

Member Function Documentation

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

Aggregate the inner iterator.

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

Definition at line 122 of file cachingiterator.inc.

       {
              return call_user_func_array(array($this->it, $func), $params);
       }
CachingIterator::__toString ( ) [inherited]
Returns:
the string represenatation that was generated for the current element
Exceptions:
exceptionwhen CALL_TOSTRING was not specified in constructor

Definition at line 131 of file cachingiterator.inc.

       {
              if ($this->flags & self::TOSTRING_USE_KEY)
              {
                     return $this->key;
              }
              else if ($this->flags & self::TOSTRING_USE_CURRENT)
              {
                     return $this->current;
              }
              if (!$this->flags & self::CALL_TOSTRING)
              {
                     throw new exception('CachingIterator does not fetch string value (see CachingIterator::__construct)');
              }
              return $this->strValue;
       }
CachingIterator::current ( ) [inherited]
Returns:
the current element

Implements Iterator.

Definition at line 105 of file cachingiterator.inc.

       {
              return $this->current;
       }

Here is the caller graph for this function:

Returns:
An Iterator for the children

Implements RecursiveIterator.

Definition at line 93 of file recursivecachingiterator.inc.

       {
              return $this->getChildren;
       }
Returns:
The inner iterator

Implements OuterIterator.

Definition at line 151 of file cachingiterator.inc.

       {
              return $this->it;
       }
Returns:
whether the current element has children
Note:
The check whether the Iterator for the children can be created was already executed. Hence when flag CATCH_GET_CHILD was given in constructor this fucntion returns false so that getChildren does not try to access those children.

Implements RecursiveIterator.

Definition at line 86 of file recursivecachingiterator.inc.

       {
              return $this->hasChildren;
       }
CachingIterator::hasNext ( ) [inherited]
Returns:
whether there is one more element

Definition at line 98 of file cachingiterator.inc.

       {
              return $this->it->valid();
       }
CachingIterator::key ( ) [inherited]
Returns:
the current key

Implements Iterator.

Definition at line 112 of file cachingiterator.inc.

       {
              return $this->key;
       }

Here is the caller graph for this function:

CachingIterator::next ( ) [inherited]

Forward to the next element.

Implements Iterator.

Definition at line 69 of file cachingiterator.inc.

       {
              if ($this->valid = $this->it->valid()) {
                     $this->current = $this->it->current();
                     $this->key = $this->it->key();
                     if ($this->flags & self::CALL_TOSTRING) {
                            if (is_object($this->current)) {
                                   $this->strValue = $this->current->__toString();
                            } else {
                                   $this->strValue = (string)$this->current;
                            }
                     }
              } else {
                     $this->current = NULL;
                     $this->key = NULL;
                     $this->strValue = NULL;
              }
              $this->it->next();
       }

Here is the call graph for this function:

Here is the caller graph for this function:

Rewind Iterator.

Reimplemented from CachingIterator.

CachingIterator::valid ( ) [inherited]
Returns:
whether the iterator is valid

Implements Iterator.

Definition at line 91 of file cachingiterator.inc.

       {
              return $this->valid;
       }

Here is the caller graph for this function:


Member Data Documentation

Definition at line 23 of file recursivecachingiterator.inc.

Definition at line 22 of file recursivecachingiterator.inc.

const CachingIterator::CALL_TOSTRING = 0x00000001 [inherited]

Definition at line 30 of file cachingiterator.inc.

const CachingIterator::CATCH_GET_CHILD = 0x00000002 [inherited]

Definition at line 31 of file cachingiterator.inc.

const CachingIterator::TOSTRING_USE_CURRENT = 0x00000020 [inherited]

Definition at line 33 of file cachingiterator.inc.

const CachingIterator::TOSTRING_USE_KEY = 0x00000010 [inherited]

Definition at line 32 of file cachingiterator.inc.


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