- MFH Add ability to bypass key() surrounding and make that default

This commit is contained in:
Marcus Boerger 2005-10-13 19:49:27 +00:00
parent 7e2bccf776
commit 4c8afd895a

View File

@ -19,8 +19,8 @@
class RecursiveTreeIterator extends RecursiveIteratorIterator class RecursiveTreeIterator extends RecursiveIteratorIterator
{ {
const BYPASS_CURRENT = 0x00000004; const BYPASS_CURRENT = 0x00000004;
const BYPASS_KEY = 0x00000008;
private $callToString;
private $rit_flags; private $rit_flags;
/** /**
@ -29,11 +29,10 @@ class RecursiveTreeIterator extends RecursiveIteratorIterator
* @param cit_flags flags passed to RecursiveCachingIterator (for hasNext) * @param cit_flags flags passed to RecursiveCachingIterator (for hasNext)
* @param mode mode passed to RecursiveIteratoIterator (parent) * @param mode mode passed to RecursiveIteratoIterator (parent)
*/ */
function __construct(RecursiveIterator $it, $rit_flags = 0, $cit_flags = CachingIterator::CATCH_GET_CHILD, $mode = self::SELF_FIRST) function __construct(RecursiveIterator $it, $rit_flags = self::BYPASS_KEY, $cit_flags = CachingIterator::CATCH_GET_CHILD, $mode = self::SELF_FIRST)
{ {
parent::__construct(new RecursiveCachingIterator($it, $cit_flags), $mode, $rit_flags); parent::__construct(new RecursiveCachingIterator($it, $cit_flags), $mode, $rit_flags);
$this->rit_flags = $rit_flags; $this->rit_flags = $rit_flags;
$this->callToString = (bool)($cit_flags & CachingIterator::CALL_TOSTRING);
} }
/** Prefix strings used in getPrefix() /** Prefix strings used in getPrefix()
@ -65,7 +64,7 @@ class RecursiveTreeIterator extends RecursiveIteratorIterator
*/ */
function getEntry() function getEntry()
{ {
return $this->callToString ? $this->__toString() : parent::current(); return @(string)parent::current();
} }
/** @return string to place after the current element /** @return string to place after the current element
@ -85,7 +84,7 @@ class RecursiveTreeIterator extends RecursiveIteratorIterator
} }
else else
{ {
return $this->getPrefix() . $this->getEntry() . $this->getPostfix(); return $this->getPrefix() . $this->getEntry() . $this->getPostfix();
} }
} }
@ -93,7 +92,14 @@ class RecursiveTreeIterator extends RecursiveIteratorIterator
*/ */
function key() function key()
{ {
return $this->getPrefix() . parent::key() . $this->getPostfix(); if ($this->rit_flags & self::BYPASS_KEY)
{
return parent::key();
}
else
{
return $this->getPrefix() . parent::key() . $this->getPostfix();
}
} }
/** Aggregates the inner iterator /** Aggregates the inner iterator