]> granicus.if.org Git - php/commitdiff
- Update docu
authorMarcus Boerger <helly@php.net>
Fri, 2 Sep 2005 19:15:30 +0000 (19:15 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 2 Sep 2005 19:15:30 +0000 (19:15 +0000)
ext/spl/examples/recursivefilteriterator.inc [deleted file]
ext/spl/internal/recursivefilteriterator.inc
ext/spl/spl.php

diff --git a/ext/spl/examples/recursivefilteriterator.inc b/ext/spl/examples/recursivefilteriterator.inc
deleted file mode 100755 (executable)
index 44e1bbc..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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
index 3cb3de06f31da1d389442cba3c26324e341f2e4e..b1271aef876de2f2dd56b1735280201ffc88e1be 100755 (executable)
  * @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);
        }
        
@@ -34,15 +41,17 @@ class RecursiveFilterIterator extends FilterIterator implements RecursiveIterato
         */
        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
index 307cec0c2d6f58b20c6a88b8385e1daadbbac9fd..ba2f5dcc4a9f0554a728ef25e78b69e6a1b0350a 100755 (executable)
@@ -495,6 +495,7 @@ interface Serializeable
 /** @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.
@@ -507,8 +508,28 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Countable
         * 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.
@@ -555,6 +576,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Countable
 /** @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.
@@ -570,8 +592,23 @@ class ArrayIterator implements SeekableIterator, ArrayAccess, Countable
         * 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