Re: Clone FilterIterator/IteratorIterator?

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

 



Oh sorry, it's too late and too mutch fiddeling with the testcase.

Corrected testcase:

<?php

class MyIterator extends FilterIterator {
  public function accept() {
    return true;
  }
}

$arr = new ArrayObject(array());
$it1 = new MyIterator($arr->getIterator());
$it2 = clone $it1;



Throws Fatal error: Trying to clone an uncloneable object of class MyIterator


2014-03-24 21:48 GMT+01:00 Aziz Saleh <azizsaleh@xxxxxxxxx>:
>
>
>
> 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.
>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php





[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