_data = array();
if (!is_array($mixed) || func_num_args() > 1) {
$mixed = func_get_args();
}
if ($this->_isAssoc($mixed)) {
foreach ($mixed as $prop => $val) {
if (!is_numeric($prop)) {
$this->_data[$prop] = $val;
}
}
}
else {
foreach ($mixed as $prop) {
if (!is_numeric($prop)) {
$this->_data[$prop] = FALSE;
}
}
}
}
/* utility function to decide if an array is associative */
protected function _isAssoc($var) {
return is_array($var) && array_diff_key($var, array_keys(array_keys($var)));
}
/* implementation of __set, just chucks stuff in _data */
function __set($name, $value) {
$this->_data[$name] = $value;
}
/* grabs stuff from _data */
function __get($name) {
if (isset($this->_data[$name])) {
return $this->_data[$name];
}
return FALSE;
}
function rewind() {
reset($this->_data);
}
function current() {
return current($this->_data);
}
function key() {
return key($this->_data);
}
function next() {
return next($this->_data);
}
function valid() {
return ($this->current() !== FALSE);
}
}