/** * The default array can be passed as the first argument in the constructor. * @param array optional $defaults */ public function __construct($defaults = array()) { if (is_null(self::$enumData['methodMap'])) { self::$enumData['methodMap'] = Enumerator::get('methodMap'); self::$enumData['destructiveMap'] = Enumerator::get('destructiveMap'); } $this->position = 0; $this->data = is_array($defaults) ? $defaults : array_filter(func_get_args()); }