<?php

class Vframe_Attribute implements CountableSerializableArrayAccessIterator
{
  protected 
$_aAttributes = array();
  
  public function 
dump()
  {
    return 
$this->_aAttributes;
  }
  
  public function 
__get($sParam)
  {
    return 
$this->__isset($sParam) ? $this->_aAttributes[$sParam] : null;
  }
  
  public function 
__set($sParam$mValue)
  {
    return 
$this->_aAttributes[$sParam] = $mValue;
  }
  
  public function 
__isset($sParam)
  {
    return isset(
$this->_aAttributes[$sParam]);
  }
  
  public function 
__unset($sParam)
  {
    if(
$this->__isset($sParam))
      unset(
$this->_aAttributes[$sParam]);
  }
  
  public function 
__sleep()
  {
    
  }
  
  public function 
__wakeUp()
  {
    
  }
  
  
/**
   * Serializable
   */
  
  
public function serialize()
  {
    return 
serialize($this->_aAttributes);
  }
  
  public function 
unserialize($sString)
  {
    if(
is_array($aAttributes unserialize($sString)))
      return 
$this->_aAttributes $aAttributes;
    
    return 
false;
  }
  
  
/**
   * Countable
   */
  
public function count()
  {
    return 
count($this->_aAttributes);
  }
  
  
/**
   * Iterator
   */
  
  
public function rewind()
  {
    
reset($this->_aAttributes);
  }
  
  public function 
key()
  {
    return 
key($this->_aAttributes);
  }
  
  public function 
next()
  {
    return 
next($this->_aAttributes);
  }
  
  public function 
current()
  {
    return 
current($this->_aAttributes);
  }
  
  public function 
valid()
  {
    return (
$this->current() !== false);
  }
  
  
// ArrayAccess
  
  
public function offsetGet($sParam)
  {
    return 
$this->__get($sParam);
  }
  
  public function 
offsetSet($sParam$mValue)
  {
    return 
$this->__set($sParam$mValue);
  }
  
  public function 
offsetExists($sParam)
  {
    return 
$this->__isset($sParam);
  }

  public function 
offsetUnset($sParam)
  {
    
$this->__unset($sParam);
  }
}

?>