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>