<?php
class misc_class 
  public  
$var1 "abc";
  public  
$var2 123;
  public  
$var3 "def";
  private 
$var4 456;
}
$test = new misc_class;
foreach(
$test as $key=>$value)
  echo 
"$key = $value<br />\n";
?>
Output
var1 = abc
var2 = 123
var3 = def
You can overload PHP's internal iterator by redefining the rewind(), current(), key(), next() and valid() methods like this:

<?php
class MyIterator implements Iterator {
   private 
$var = array();

   public function 
__construct($array) {
       if (
is_array($array)) {
           
$this->var $array;
       }
   }
   public function 
rewind() {
       echo 
"rewinding<br />\n";
       
reset($this->var);
   }
   public function 
current() {
       
$var current($this->var);
       echo 
"current: $var<br />\n";
       return 
$var;
   }
   public function 
key() {
       
$var key($this->var);
       echo 
"key: $var<br />\n";
       return 
$var;
   }
   public function 
next() {
       
$var next($this->var);
       echo 
"next: $var<br />\n";
       return 
$var;
   }
   public function 
valid() {
       
$var $this->current() !== false;
       echo 
"valid: {$var}<br />\n";
       return 
$var;
   }
}

$it = new MyIterator(array(1,2,3));
foreach (
$it as $key=>$value) {
   echo 
"$key$value<br />\n";
}
?>
Output
rewinding
current: 1
valid: 1
current: 1
key: 0
0: 1
next: 2
current: 2
valid: 1
current: 2
key: 1
1: 2
next: 3
current: 3
valid: 1
current: 3
key: 2
2: 3
next:
current:
valid:
If you just want to override some of them, use the IteratorAggregate class.