use 'CachingIterator::TOSTRING_USE_INNER' flag<?phpclass A extends ArrayIterator { public function __toString(){ return 'toString this class'; } }$iterator = new A(array('apple'=>10, 'banana'=>20, 'cat'=>30));$cache = new CachingIterator($iterator, CachingIterator::TOSTRING_USE_INNER);$cache->next();$cache->next();echo $cache;/*output:toString this class*/?>