Daily Archives: March 30, 2006

PHP5 Iterators

I’m late to the PHP5 party. When it was released I kicked the tyres, wrote a few sample scripts, but lacked the time and resources to deploy it properly.

But as I’m about to start a large new project, it’s time to bite the bullet!

I’m playing around with Xapian, which is a C++ search library with a nice object oriented interface, but the PHP bindings for it exposed it as a series of functions, so I set about writing a wrapper to mimic the “real” API.

I noticed several classes implemented an iterator, so I thought it would be an opportunity to try and use the Iterator interface, and found a great article on PHP5 Iterators over at Scatterism.

Within a few minutes, I was able to turn a slightly ugly Xapian loop into a nice foreach – behold!


$mseti = MSet_begin($matches);
while (! MSetIterator_equals($mseti, $end)) {

And after!

foreach($mseti as $doc){

Proof that iterators really do wash whiter and shift the stains inferior patterns leave behind :)