+++ /dev/null
-<?php
-
-/** @file recursivefilteriterator.inc
- * @ingroup Examples
- * @brief class RecursiveFilterIterator
- * @author Marcus Boerger
- * @date 2003 - 2005
- *
- * SPL - Standard PHP Library
- */
-
-/** @ingroup Examples
- * @brief A recursive Filter
- * @author Marcus Boerger
- * @version 1.0
- *
- * 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.
- */
-abstract class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator
-{
- /*! The constructor takes a RecursiveIterator
- */
- function __construct(RecursiveIterator $it)
- {
- $this->ref = new ReflectionClass($this);
- parent::__construct($it);
- }
-
- /*! return whether the inner iterator has children
- */
- function hasChildren()
- {
- return $this->getInnerIterator()->hasChildren();
- }
-
- /*! \return children as instance of derived RecursiveFilterIterator class
- *
- * \see RecursiveFilterIterator
- */
- function getChildren()
- {
- return $this->ref->newInstance($this->getInnerIterator()->getChildren());
- }
-
- private $ref;
-}
-
-?>
\ No newline at end of file
* @version 1.0
* @since PHP 6.0
*
- * This extended FilterIterator allows a recursive iteration using
- * RecursiveIteratorIterator that only shows those elements which
- * are accepted. It is of course better to filter before doing the
- * recursion since it allows to prevent recursion into children that
- * get declined later anyway.
+ * 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.
*/
-class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator
+abstract class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator
{
/** @param $it the RecursiveIterator to filter
*/
function __construct(RecursiveIterator $it)
{
+ $this->ref = new ReflectionClass($this);
parent::__construct($it);
}
*/
function hasChildren()
{
- return $this->it->hasChildren();
+ return $this->getInnerIterator()->hasChildren();
}
/** @return the ParentIterator for the current elements children
*/
function getChildren()
{
- return new RecursiveFilterIterator($this->it->getChildren());
+ return $this->ref->newInstance($this->getInnerIterator()->getChildren());
}
+
+ private $ref;
}
?>
\ No newline at end of file
/** @ingroup SPL
* @brief An Array wrapper
* @since PHP 5.0
+ * @version 1.1
*
* This array wrapper allows to recursively iterate over Arrays and public
* Object properties.
* That is any Array or Object.
*
* @param $array the array to use.
+ * @param $flags see setFlags().
*/
- function __construct($array);
+ function __construct($array, $flags = 0);
+
+ /** Set behavior flags.
+ *
+ * @param $flags bitmask as follows:
+ * 0 set: properties of the object have their normal functionality
+ * when accessed as list (var_dump, foreach, etc.)
+ * 1 set: array indices can be accessed as properties in read/write
+ */
+ function setFlags($flags);
+
+ /**
+ * @ return current flags
+ */
+ function getFlags();
+
+ /**
+ * @param $array new array or object
+ */
+ function exchangeArray($array);
/** @return the iterator which is an ArrayIterator object connected to
* this object.
/** @ingroup SPL
* @brief An Array iterator
* @since PHP 5.0
+ * @version 1.1
*
* This iterator allows to unset and modify values and keys while iterating
* over Arrays and Objects.
* That is any Array or Object.
*
* @param $array the array to use.
+ * @param $flags see setFlags().
+ */
+ function __construct($array, $flags = 0);
+
+ /** Set behavior flags.
+ *
+ * @param $flags bitmask as follows:
+ * 0 set: properties of the object have their normal functionality
+ * when accessed as list (var_dump, foreach, etc.)
+ * 1 set: array indices can be accessed as properties in read/write
+ */
+ function setFlags($flags);
+
+ /**
+ * @ return current flags
*/
- public function __construct($array);
+ function getFlags();
/** @param $index offset to inspect
* @return whetehr offset $index esists