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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: quick_defect at yahoo dot com
New email:
PHP Version: OS:

 

 [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

Pull Requests

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-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 01:01:30 2024 UTC