Req #49369 [Com]: Change current(), key(), next(), etc. to check for Iterator

2012-12-08 Thread le...@php.net
Edit report at https://bugs.php.net/bug.php?id=49369&edit=1

 ID: 49369
 Comment by: le...@php.net
 Reported by:admin at ifyouwantblood dot de
 Summary:Change current(), key(), next(), etc. to check for
 Iterator
 Status: Open
 Type:   Feature/Change Request
 Package:Arrays related
 Operating System:   *
 PHP Version:*
 Block user comment: N
 Private report: N

 New Comment:

Added bug #63678 as a duplicate.


Previous Comments:

[2012-11-16 04:35:52] le...@php.net

Sorry, I misunderstood the bug. Silly me.  Ignore my above comments.


[2012-11-16 04:33:26] le...@php.net

Also, calling `current($i)` gets the current value of the object `$i` which is 
the 
array; it doesn't call `$i->current`.


[2012-11-16 04:27:19] le...@php.net

I'm not sure this is a php bug.  Iterators should be rewound almost 100% of the 
time before being used, especially when using an array or an object that 
implements Iterator instead of IteratorAggregate.

Maybe the documentation should try to make this better known?


[2012-07-01 11:14:30] bugs dot php dot net dot nsp at cvogt dot org

As a further note, the current behavior or current() also leaks private fields 
unlike e.g. http://php.net/manual/en/language.oop5.iterations.php.

class Test{
  private $field = 5;
  public $field3 = 6;
}
$t = new Test;
print current($t);

Expected result:
6

Actual result:
5


[2009-08-26 10:34:05] admin at ifyouwantblood dot de

Description:

it would be helpful for chained Iterators, if the default array functions would 
check if an given object is an instanceof Iterator and react appropriate.

thus key() calling object->key(), current() calling object->current() and so on.

Reproduce code:
---
aarray=$array;
}

public function key()
{
return key($this->aarray);
}

public function current()
{
return current($this->aarray);
}

public function valid()
{
return (current($this->aarray)!==FALSE);
}

public function next()
{
next($this->aarray);
}

public function rewind()
{
reset($this->aarray);
}
}

$i=new iterator_array(Array(1,2));
var_dump(current($i));
var_dump(key($i));
next($i);
var_dump($current($i));
var_dump(key($i));

Expected result:

int(1)
int(0)
int(2)
int(1)


Actual result:
--
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
string(9) "�*�aarray"
bool(false)
NULL







-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49369&edit=1


Req #49369 [Com]: Change current(), key(), next(), etc. to check for Iterator

2012-11-15 Thread le...@php.net
Edit report at https://bugs.php.net/bug.php?id=49369&edit=1

 ID: 49369
 Comment by: le...@php.net
 Reported by:admin at ifyouwantblood dot de
 Summary:Change current(), key(), next(), etc. to check for
 Iterator
 Status: Open
 Type:   Feature/Change Request
 Package:Arrays related
 Operating System:   *
 PHP Version:*
 Block user comment: N
 Private report: N

 New Comment:

Sorry, I misunderstood the bug. Silly me.  Ignore my above comments.


Previous Comments:

[2012-11-16 04:33:26] le...@php.net

Also, calling `current($i)` gets the current value of the object `$i` which is 
the 
array; it doesn't call `$i->current`.


[2012-11-16 04:27:19] le...@php.net

I'm not sure this is a php bug.  Iterators should be rewound almost 100% of the 
time before being used, especially when using an array or an object that 
implements Iterator instead of IteratorAggregate.

Maybe the documentation should try to make this better known?


[2012-07-01 11:14:30] bugs dot php dot net dot nsp at cvogt dot org

As a further note, the current behavior or current() also leaks private fields 
unlike e.g. http://php.net/manual/en/language.oop5.iterations.php.

class Test{
  private $field = 5;
  public $field3 = 6;
}
$t = new Test;
print current($t);

Expected result:
6

Actual result:
5


[2009-08-26 10:34:05] admin at ifyouwantblood dot de

Description:

it would be helpful for chained Iterators, if the default array functions would 
check if an given object is an instanceof Iterator and react appropriate.

thus key() calling object->key(), current() calling object->current() and so on.

Reproduce code:
---
aarray=$array;
}

public function key()
{
return key($this->aarray);
}

public function current()
{
return current($this->aarray);
}

public function valid()
{
return (current($this->aarray)!==FALSE);
}

public function next()
{
next($this->aarray);
}

public function rewind()
{
reset($this->aarray);
}
}

$i=new iterator_array(Array(1,2));
var_dump(current($i));
var_dump(key($i));
next($i);
var_dump($current($i));
var_dump(key($i));

Expected result:

int(1)
int(0)
int(2)
int(1)


Actual result:
--
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
string(9) "�*�aarray"
bool(false)
NULL







-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49369&edit=1


Req #49369 [Com]: Change current(), key(), next(), etc. to check for Iterator

2012-11-15 Thread le...@php.net
Edit report at https://bugs.php.net/bug.php?id=49369&edit=1

 ID: 49369
 Comment by: le...@php.net
 Reported by:admin at ifyouwantblood dot de
 Summary:Change current(), key(), next(), etc. to check for
 Iterator
 Status: Open
 Type:   Feature/Change Request
 Package:Arrays related
 Operating System:   *
 PHP Version:*
 Block user comment: N
 Private report: N

 New Comment:

Also, calling `current($i)` gets the current value of the object `$i` which is 
the 
array; it doesn't call `$i->current`.


Previous Comments:

[2012-11-16 04:27:19] le...@php.net

I'm not sure this is a php bug.  Iterators should be rewound almost 100% of the 
time before being used, especially when using an array or an object that 
implements Iterator instead of IteratorAggregate.

Maybe the documentation should try to make this better known?


[2012-07-01 11:14:30] bugs dot php dot net dot nsp at cvogt dot org

As a further note, the current behavior or current() also leaks private fields 
unlike e.g. http://php.net/manual/en/language.oop5.iterations.php.

class Test{
  private $field = 5;
  public $field3 = 6;
}
$t = new Test;
print current($t);

Expected result:
6

Actual result:
5


[2009-08-26 10:34:05] admin at ifyouwantblood dot de

Description:

it would be helpful for chained Iterators, if the default array functions would 
check if an given object is an instanceof Iterator and react appropriate.

thus key() calling object->key(), current() calling object->current() and so on.

Reproduce code:
---
aarray=$array;
}

public function key()
{
return key($this->aarray);
}

public function current()
{
return current($this->aarray);
}

public function valid()
{
return (current($this->aarray)!==FALSE);
}

public function next()
{
next($this->aarray);
}

public function rewind()
{
reset($this->aarray);
}
}

$i=new iterator_array(Array(1,2));
var_dump(current($i));
var_dump(key($i));
next($i);
var_dump($current($i));
var_dump(key($i));

Expected result:

int(1)
int(0)
int(2)
int(1)


Actual result:
--
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
string(9) "�*�aarray"
bool(false)
NULL







-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49369&edit=1


Req #49369 [Com]: Change current(), key(), next(), etc. to check for Iterator

2012-11-15 Thread le...@php.net
Edit report at https://bugs.php.net/bug.php?id=49369&edit=1

 ID: 49369
 Comment by: le...@php.net
 Reported by:admin at ifyouwantblood dot de
 Summary:Change current(), key(), next(), etc. to check for
 Iterator
 Status: Open
 Type:   Feature/Change Request
 Package:Arrays related
 Operating System:   *
 PHP Version:*
 Block user comment: N
 Private report: N

 New Comment:

I'm not sure this is a php bug.  Iterators should be rewound almost 100% of the 
time before being used, especially when using an array or an object that 
implements Iterator instead of IteratorAggregate.

Maybe the documentation should try to make this better known?


Previous Comments:

[2012-07-01 11:14:30] bugs dot php dot net dot nsp at cvogt dot org

As a further note, the current behavior or current() also leaks private fields 
unlike e.g. http://php.net/manual/en/language.oop5.iterations.php.

class Test{
  private $field = 5;
  public $field3 = 6;
}
$t = new Test;
print current($t);

Expected result:
6

Actual result:
5


[2009-08-26 10:34:05] admin at ifyouwantblood dot de

Description:

it would be helpful for chained Iterators, if the default array functions would 
check if an given object is an instanceof Iterator and react appropriate.

thus key() calling object->key(), current() calling object->current() and so on.

Reproduce code:
---
aarray=$array;
}

public function key()
{
return key($this->aarray);
}

public function current()
{
return current($this->aarray);
}

public function valid()
{
return (current($this->aarray)!==FALSE);
}

public function next()
{
next($this->aarray);
}

public function rewind()
{
reset($this->aarray);
}
}

$i=new iterator_array(Array(1,2));
var_dump(current($i));
var_dump(key($i));
next($i);
var_dump($current($i));
var_dump(key($i));

Expected result:

int(1)
int(0)
int(2)
int(1)


Actual result:
--
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
string(9) "�*�aarray"
bool(false)
NULL







-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49369&edit=1


Req #49369 [Com]: Change current(), key(), next(), etc. to check for Iterator

2012-07-01 Thread bugs dot php dot net dot nsp at cvogt dot org
Edit report at https://bugs.php.net/bug.php?id=49369&edit=1

 ID: 49369
 Comment by: bugs dot php dot net dot nsp at cvogt dot org
 Reported by:admin at ifyouwantblood dot de
 Summary:Change current(), key(), next(), etc. to check for
 Iterator
 Status: Open
 Type:   Feature/Change Request
 Package:Arrays related
 Operating System:   *
 PHP Version:*
 Block user comment: N
 Private report: N

 New Comment:

As a further note, the current behavior or current() also leaks private fields 
unlike e.g. http://php.net/manual/en/language.oop5.iterations.php.

class Test{
  private $field = 5;
  public $field3 = 6;
}
$t = new Test;
print current($t);

Expected result:
6

Actual result:
5


Previous Comments:

[2009-08-26 10:34:05] admin at ifyouwantblood dot de

Description:

it would be helpful for chained Iterators, if the default array functions would 
check if an given object is an instanceof Iterator and react appropriate.

thus key() calling object->key(), current() calling object->current() and so on.

Reproduce code:
---
aarray=$array;
}

public function key()
{
return key($this->aarray);
}

public function current()
{
return current($this->aarray);
}

public function valid()
{
return (current($this->aarray)!==FALSE);
}

public function next()
{
next($this->aarray);
}

public function rewind()
{
reset($this->aarray);
}
}

$i=new iterator_array(Array(1,2));
var_dump(current($i));
var_dump(key($i));
next($i);
var_dump($current($i));
var_dump(key($i));

Expected result:

int(1)
int(0)
int(2)
int(1)


Actual result:
--
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
string(9) "�*�aarray"
bool(false)
NULL







-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49369&edit=1