Re: Clone FilterIterator/IteratorIterator?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 24, 2014 at 4:37 PM, Peter Oberst <peter.oberst0@xxxxxxxxx>wrote:

> Hi,
>
> I want to use an Iterator that returns an the inner iterator, with an
> additional FilterIterator applied.
> The returned iterator should be separated from my inner iterator, to
> avoid errors like 'ArrayIterator::next(): Array was modified outside'.
> To avoid this, I think it might be the best to simply clone the inner
> iterator.
>
> Unfortunatly, if the innerIterator is an FilterIterator, so cloning
> will throw an exception:
>     PHP Fatal error:  Call to undefined method ArrayIterator::getIterator()
>
> Is there a good reason why i can't clone a FilterIterator?
>
> Testcase:
> <?php
>
> class MyIterator extends FilterIterator {
>   public function accept() {
>     return true;
>   }
> }
>
> $arr = new ArrayObject(array());
> $it1 = new MyIterator($arr->getIterator());
> $it2 = $it1->getIterator();
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
Not sure why you came to that conclusion, but the error you are getting is
because MyIterator ($it1) extends FilterIterator extends IteratorIterator
implements OuterIterator implements OuterIterator OuterIterator extends
Iterator extends Traversable, none which have a getIterator() method
implemented.

Sorry for duplicate email, forgot to reply all.

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux