<?php  

class TheActualIterator implements Iterator { 
 
  function current() {} 
  function key() {} 
  function next() {} 
  function valid() {} 
  function rewind() {} 
 
  function getFoo() { return 'this is ' . get_class($this); }

  function getbar() { return 'this is ' . get_class($this); }

}

class SomeRandomDecorator extends filteriterator {
  function accept() { return true; }
}
 
$a = new TheActualIterator();
 
$b = new SomeRandomDecorator($a);

printf("Calling Foo() as foo(): %s\n", $b->getfoo());
printf("Calling Foo() as Foo(): %s\n", $b->getFoo());
printf("Calling Foo() as FOO(): %s\n", $b->getFOO());

printf("Calling bar() as bar(): %s\n", $b->getbar());
printf("Calling bar() as Bar(): %s\n", $b->getBar());
printf("Calling bar() as BAR(): %s\n", $b->getBAR());
