|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2004-03-13 14:53 UTC] helly@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 01:00:01 2025 UTC |
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', 'j.blo@here.com' ) ); $students->add( new Student( '00000014', 'Bob', 'Moe', 'b.moe@qut.edu.au' ) ); 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.