ID: 27586
Updated by: [EMAIL PROTECTED]
-Summary: ArrayObject::getIterator crashes Apache 2
Reported By: ebay at webcrumb dot com
-Status: Open
+Status: Assigned
-Bug Type: Arrays related
+Bug Type: Class/Object related
-Operating System: Windows XP
+Operating System: *
PHP Version: 5.0.0b4 (beta4)
-Assigned To:
+Assigned To: helly
Previous Comments:
------------------------------------------------------------------------
[2004-03-13 11:35:38] ebay at webcrumb dot com
Description:
------------
I'm not sure if I'm using ArrayObject correctly (I thought you could
use the primitive type 'array' directly to fetch iterators initially
but it seems that's not the case), but I can't tell due to the lack of
documentation ...
All latest service packs/patches are installed.
Reproduce code:
---------------
class StudentList implements IteratorAggregate
{
private $students;
public function __construct() {
$this->students = new ArrayObject( array() );
}
public function add( Student $student ) {
if( !$this->contains( $student ) ) {
// XXXX: this causes the crash!
$this->students[] = $student;
}
}
// ... snip ...
public function getIterator() {
return $this->students->getIterator();
}
}
$students = new StudentList();
$students->add( new Student( '01234123', 'Joe', 'Blo', '[EMAIL PROTECTED]'
) );
$students->add( new Student( '00000014', 'Bob', 'Moe',
'[EMAIL PROTECTED]' ) );
foreach( $students as $student ) {
echo $student->getId(); // first parameter passed to the above
constructors
}
Expected result:
----------------
This should print out "0123412300000014".
Actual result:
--------------
The Apache 2 service crashes hard.
Resolved by:
public function __construct() {
$this->students = array();
}
// ... snip ...
public function getIterator() {
$arr = new ArrayObject( $this->students );
return $arr->getIterator();
}
Using this code, the expected result is printed out.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27586&edit=1