|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2011-03-25 21:34 UTC] lbarnaud@php.net
 Description:
------------
FilterIterator instances crash when the constructor has not been called 
(accidentally).
Test script:
---------------
<?php
class Test extends FilterIterator {
    function __construct() {
    }
    function accept() {
    }
}
$t = new Test;
foreach($t as $e);
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 02:00:02 2025 UTC | 
I wondered if other classes are be affected by this, and after some tests I found that the following classes are affected: IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator CachingIterator RecursiveCachingIterator NoRewindIterator InfiniteIterator RegexIterator RecursiveRegexIterator GlobIterator SplFileObject SplTempFileObject tests: <?php class IteratorIteratorTest extends IteratorIterator { function __construct(){} } $o = new IteratorIteratorTest; $o->rewind() class FilterIteratorTest extends FilterIterator { function __construct(){} function accept(){} } $o = new FilterIteratorTest; $o->rewind() class RecursiveFilterIteratorTest extends RecursiveFilterIterator { function __construct(){} function accept(){} } $o = new RecursiveFilterIteratorTest; $o->hasChildren() class ParentIteratorTest extends ParentIterator { function __construct(){} } $o = new ParentIteratorTest; $o->accept() class LimitIteratorTest extends LimitIterator { function __construct(){} } $o = new LimitIteratorTest; $o->rewind() class CachingIteratorTest extends CachingIterator { function __construct(){} } $o = new CachingIteratorTest; $o->rewind() class RecursiveCachingIteratorTest extends RecursiveCachingIterator { function __construct(){} } $o = new RecursiveCachingIteratorTest; $o->rewind() class NoRewindIteratorTest extends NoRewindIterator { function __construct(){} } $o = new NoRewindIteratorTest; $o->valid() class InfiniteIteratorTest extends InfiniteIterator { function __construct(){} } $o = new InfiniteIteratorTest; $o->next() class RegexIteratorTest extends RegexIterator { function __construct(){} } $o = new RegexIteratorTest; $o->rewind() class RecursiveRegexIteratorTest extends RecursiveRegexIterator { function __construct(){} } $o = new RecursiveRegexIteratorTest; $o->hasChildren() class GlobIteratorTest extends GlobIterator { function __construct(){} } $o = new GlobIteratorTest; $o->count() class SplFileObjectTest extends SplFileObject { function __construct(){} } $o = new SplFileObjectTest; $o->rewind() class SplTempFileObjectTest extends SplTempFileObject { function __construct(){} } $o = new SplTempFileObjectTest; $o->rewind()