SPL-StandardPHPLibrary
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
RecursiveFilterIterator Class Reference
Inheritance diagram for RecursiveFilterIterator:
Inheritance graph
Collaboration diagram for RecursiveFilterIterator:
Collaboration graph

Public Member Functions

 __call ($func, $params)
 
 __construct (RecursiveIterator $it)
 
 accept ()
 
 current ()
 
 getChildren ()
 
 getInnerIterator ()
 
 hasChildren ()
 
 key ()
 
 next ()
 
 rewind ()
 
 valid ()
 

Protected Member Functions

 __clone ()
 
 fetch ()
 

Private Attributes

 $ref
 

Detailed Description

Iterator to filter recursive iterators.

Author
Marcus Boerger
Version
1.0
Since
PHP 5.1

Passes the RecursiveIterator interface to the inner Iterator and provides the same functionality as FilterIterator. This allows you to skip parents and all their childs before loading them all. You need to care about function getChildren() because it may not always suit your needs. The builtin behavior uses reflection to return a new instance of the exact same class it is called from. That is you extend RecursiveFilterIterator and getChildren() will create instance of that class. The problem is that doing this does not transport any state or control information of your accept() implementation to the new instance. To overcome this problem you might need to overwrite getChildren(), call this implementation and pass the control vaules manually.

Definition at line 30 of file recursivefilteriterator.inc.

Constructor & Destructor Documentation

RecursiveFilterIterator::__construct ( RecursiveIterator  $it)
Parameters
$itthe RecursiveIterator to filter

Definition at line 34 of file recursivefilteriterator.inc.

35  {
36  parent::__construct($it);
37  }

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

Definition at line 121 of file filteriterator.inc.

122  {
123  return call_user_func_array(array($this->it, $func), $params);
124  }
FilterIterator::__clone ( )
protectedinherited

hidden __clone

Definition at line 104 of file filteriterator.inc.

104  {
105  // disallow clone
106  }
FilterIterator::accept ( )
abstractinherited

Accept function to decide whether an element of the inner iterator should be accessible through the Filteriterator.

Returns
whether or not to expose the current element of the inner iterator.

Referenced by FilterIterator\fetch().

FilterIterator::current ( )
inherited
Returns
The current value

Implements Iterator.

Definition at line 97 of file filteriterator.inc.

Referenced by RegexFindFile\accept(), and FindFile\accept().

97  {
98  return $this->it->current();
99  }
FilterIterator::fetch ( )
protectedinherited

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().

61  {
62  while ($this->it->valid()) {
63  if ($this->accept()) {
64  return;
65  }
66  $this->it->next();
67  };
68  }
accept()
Accept function to decide whether an element of the inner iterator should be accessible through the F...

Here is the call graph for this function:

RecursiveFilterIterator::getChildren ( )
Returns
an iterator for the current elements children
Note
the returned iterator will be of the same class as $this

Implements RecursiveIterator.

Definition at line 50 of file recursivefilteriterator.inc.

References FilterIterator\getInnerIterator().

51  {
52  if (empty($this->ref))
53  {
54  $this->ref = new ReflectionClass($this);
55  }
56  return $this->ref->newInstance($this->getInnerIterator()->getChildren());
57  }

Here is the call graph for this function:

FilterIterator::getInnerIterator ( )
inherited
RecursiveFilterIterator::hasChildren ( )
Returns
whether the current element has children

Implements RecursiveIterator.

Definition at line 41 of file recursivefilteriterator.inc.

References FilterIterator\getInnerIterator().

42  {
43  return $this->getInnerIterator()->hasChildren();
44  }

Here is the call graph for this function:

FilterIterator::key ( )
inherited
Returns
The current key

Implements Iterator.

Definition at line 90 of file filteriterator.inc.

Referenced by KeyFilter\accept().

90  {
91  return $this->it->key();
92  }
FilterIterator::next ( )
inherited

Move to next element.

Returns
void

Implements Iterator.

Definition at line 75 of file filteriterator.inc.

References FilterIterator\fetch().

75  {
76  $this->it->next();
77  $this->fetch();
78  }
fetch()
Fetch next element and store it.

Here is the call graph for this function:

FilterIterator::rewind ( )
inherited

Rewind the inner iterator.

Implements Iterator.

Definition at line 42 of file filteriterator.inc.

References FilterIterator\fetch().

42  {
43  $this->it->rewind();
44  $this->fetch();
45  }
fetch()
Fetch next element and store it.

Here is the call graph for this function:

FilterIterator::valid ( )
inherited
Returns
Whether more elements are available

Implements Iterator.

Definition at line 83 of file filteriterator.inc.

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

Member Data Documentation

RecursiveFilterIterator::$ref
private

Definition at line 59 of file recursivefilteriterator.inc.


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