Annotation of embedaddon/php/ext/spl/examples/directorytreeiterator.inc, revision 1.1.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>