Annotation of embedaddon/php/ext/spl/examples/directorytreeiterator.inc, revision 1.1

1.1     ! misho       1: <?php
        !             2: 
        !             3: /** @file directorytreeiterator.inc
        !             4:  * @ingroup Examples
        !             5:  * @brief class DirectoryTreeIterator
        !             6:  * @author  Marcus Boerger
        !             7:  * @date    2003 - 2005
        !             8:  *
        !             9:  * SPL - Standard PHP Library
        !            10:  */
        !            11: 
        !            12: /** @ingroup Examples
        !            13:  * @brief   DirectoryIterator to generate ASCII graphic directory trees
        !            14:  * @author  Marcus Boerger
        !            15:  * @version 1.1
        !            16:  */
        !            17: class DirectoryTreeIterator extends RecursiveIteratorIterator
        !            18: {
        !            19:        /** Construct from a path.
        !            20:         * @param $path directory to iterate
        !            21:         */
        !            22:        function __construct($path)
        !            23:        {
        !            24:                parent::__construct(
        !            25:                        new RecursiveCachingIterator(
        !            26:                                new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_FILENAME
        !            27:                                ), 
        !            28:                                CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD
        !            29:                        ), 
        !            30:                        parent::SELF_FIRST
        !            31:                );
        !            32:        }
        !            33: 
        !            34:        /** @return the current element prefixed with ASCII graphics
        !            35:         */     
        !            36:        function current()
        !            37:        {
        !            38:                $tree = '';
        !            39:                for ($l=0; $l < $this->getDepth(); $l++) {
        !            40:                        $tree .= $this->getSubIterator($l)->hasNext() ? '| ' : '  ';
        !            41:                }
        !            42:                return $tree . ($this->getSubIterator($l)->hasNext() ? '|-' : '\-') 
        !            43:                       . $this->getSubIterator($l)->__toString();
        !            44:        }
        !            45: 
        !            46:        /** Aggregates the inner iterator
        !            47:         */     
        !            48:        function __call($func, $params)
        !            49:        {
        !            50:                return call_user_func_array(array($this->getSubIterator(), $func), $params);
        !            51:        }
        !            52: }
        !            53: 
        !            54: ?>

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