]> granicus.if.org Git - php/commit
Added CallbackFilterIterator and RecursiveCallbackFilterIterator classes
authorArnaud Le Blanc <lbarnaud@php.net>
Sun, 27 Mar 2011 20:13:27 +0000 (20:13 +0000)
committerArnaud Le Blanc <lbarnaud@php.net>
Sun, 27 Mar 2011 20:13:27 +0000 (20:13 +0000)
commitb83e243c23daafdecaec75461b5ff4705733608d
tree5b47dc4a3e42eafa3dcf833266928a549c375e1b
parent2191af9546632c2eca7084e7e66745ff6ad7dd1a
Added CallbackFilterIterator and RecursiveCallbackFilterIterator classes

[DOC] This is a concrete FilterIterator which takes a callback as
constructor parameter, and uses this callback for filtering. This allows
to use FilterIterator without extending it.

CallbackFilterIterator Example:

$it = new ArrayIterator(range(1,100));
$it = new CallbackFilterIterator($it, function($value) {
return $value % 2;
});
foreach($it as $value) // ...

RecursiveCallbackFilterIterator Example:

$it = new RecursiveDirectoryIterator("/");
$it = new RecursiveCallbackFilterIterator($it, function($file, $k, $it) {
return $it->hasChildren() || $file->getSize() > 1024;
});
foreach(new RecursiveIteratorIterator($it) as $file) // ...

The callback takes the current value, the current key and the inner
iterator as parameters.
NEWS
ext/spl/spl_iterators.c
ext/spl/spl_iterators.h
ext/spl/tests/CallbackFilterIteratorTest-002.phpt [new file with mode: 0644]
ext/spl/tests/CallbackFilterIteratorTest.phpt [new file with mode: 0644]
ext/spl/tests/RecursiveCallbackFilterIteratorTest.phpt [new file with mode: 0644]