<?php


class DomainData implements ArrayAccess, Iterator
{
	private $position = 0;
	public $domainId;
	public $color;

	public function __construct($data = array())
	{
		$this->position = 0;
		foreach ($data as $key => $value) {
			$this[$key] = $value;
		}
	}

	public function offsetExists($offset)
	{
		return isset($this->$offset);
	}

	public function offsetSet($offset, $value)
	{
		$this->$offset = $value;
	}

	public function offsetGet($offset)
	{
		return $this->$offset;
	}

	public function offsetUnset($offset)
	{
		$this->$offset = null;
	}

	/*****************************************************************/
	/*                     Iterator Implementation                   */
	/*****************************************************************/

	public function rewind()
	{
		$this->position = 0;
	}

	public function current()
	{
		return $this[$this->position];
	}

	public function key()
	{
		return $this->position;
	}

	public function next()
	{
		++$this->position;
	}

	public function valid()
	{
		return isset($this[$this->position]);
	}
}


$domainData = new DomainData([
	"domainId" => 1,
	"color" => "red"
]);

var_dump($domainData);

foreach($domainData as $k => $v){
	var_dump("domainData[$k] = $v");
}