Annotation of embedaddon/php/ext/spl/examples/searchiterator.inc, revision 1.1.1.1

1.1       misho       1: <?php
                      2: 
                      3: /** @file searchiterator.inc
                      4:  * @ingroup Examples
                      5:  * @brief abstract class SearchIterator
                      6:  * @author  Marcus Boerger
                      7:  * @date    2003 - 2005
                      8:  *
                      9:  * SPL - Standard PHP Library
                     10:  */
                     11: 
                     12: /** @ingroup Examples
                     13:  * @brief Iterator to search for a specific element
                     14:  * @author  Marcus Boerger
                     15:  * @version 1.0
                     16:  *
                     17:  * This extended FilterIterator stops after finding the first acceptable
                     18:  * value.
                     19:  */
                     20: abstract class SearchIterator extends FilterIterator
                     21: {
                     22:        /** @internal whether an entry was found already */
                     23:        private $done = false;
                     24: 
                     25:        /** Rewind and reset so that it once again searches.
                     26:         * @return void
                     27:         */
                     28:        function rewind()
                     29:        {
                     30:                parent::rewind();
                     31:                $this->done = false;
                     32:        }
                     33: 
                     34:        /** @return whether the current element is valid
                     35:         * which can only happen once per iteration.
                     36:         */
                     37:        function valid()
                     38:        {
                     39:                return !$this->done && parent::valid();
                     40:        }
                     41:        
                     42:        /** Do not move forward but instead mark as finished.
                     43:         * @return void
                     44:         */
                     45:        function next()
                     46:        {
                     47:                $this->done = true;
                     48:        }
                     49: 
                     50:        /** Aggregates the inner iterator
                     51:         */     
                     52:        function __call($func, $params)
                     53:        {
                     54:                return call_user_func_array(array($this->getInnerIterator(), $func), $params);
                     55:        }
                     56: }
                     57: 
                     58: ?>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>