php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #36132 CachingIterator do not work well
Submitted: 2006-01-23 09:51 UTC Modified: 2006-01-24 14:35 UTC
From: quick_defect at yahoo dot com Assigned: helly (profile)
Status: Not a bug Package: SPL related
PHP Version: 5.1.2 OS: *
Private report: No CVE-ID: None
 [2006-01-23 09:51 UTC] quick_defect at yahoo dot com
Description:
------------
I know I did not use the rewind function as usual. But after I did so, the behavior of Iterator seemed went wrong.

Reproduce code:
---------------
<?php
$ary=array("1","2");
$ary_obj=new ArrayObject($ary);
$ite=$ary_obj->getIterator();
$c_ite=new CachingIterator($ite);

$ite->rewind();
$c_ite->rewind();
for($axx=$ite;$axx->valid();$axx->next())
{
        var_dump($axx->current());
}


echo "*******\n";
$c_ite->rewind();
$ite->rewind();
for($axx=$c_ite;$axx->valid();$axx->next())
{
        var_dump($axx->current());
}
?>


Expected result:
----------------
string(1) "1"
string(1) "2"
*******
string(1) "1"
string(1) "2"


Actual result:
--------------
string(1) "2"
*******
string(1) "1"
string(1) "1"
string(1) "2"


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-01-23 10:00 UTC] tony2001@php.net
Assigned to the maintainer.
 [2006-01-23 10:08 UTC] helly@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

Don't try to outsmart them and still expect them to work correct. The code you presented works exactly as you told it to.
 [2006-01-23 10:30 UTC] quick_defect at yahoo dot com
So you mean a CachingIterator can take more elements than the Iterator it cached? I can understand that the CachingIterator just caches Iterator for 1 element. As you know, there are not any documents for them. So would you PLS to illustrate this?
 [2006-01-23 10:51 UTC] sniper@php.net
Just trust what the author of the code says.
 [2006-01-24 06:13 UTC] quick_defect at yahoo dot com
A tester will never trust a developer's words, we trust manuals and actual results:) I do that for the better of php. But I will not update the status of this defect again. Because there are no documents for SPL functions, it is really difficult to determain a defect. 
helly: From your website,CachingIterator "point" to exactly the next element of the Iterator being cached. So I still think it mis-behaved after two times of rewind.
 [2006-01-24 14:35 UTC] johannes@php.net
SPL documentation is at http://php.net/~helly/php/ext/spl/ 
(as linked from php.net/spl) most classes are also 
avialable in form of an PHP implementation at 
php-src/ext/spl/internal/ in PHP Source distribution or 
CVS. And I trust the implementation only :-) 
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Sun Nov 19 01:31:42 2017 UTC