_has($key); } function &get($key, $default=null) { return $this->_get($key, $default); } function set($key, $value): IArray { return $this->_set($key, $value); } function add($value): IArray { return $this->_set(null, $value); } function del($key): IArray { return $this->_del($key); } # Iterator function key() { return $this->_key(); } function current() { return $this->_current(); } function addAll(?array $values): IArray { if ($values !== null) { $index = 0; foreach ($values as $key => $value) { if ($key === $index) { $this->add($value); $index++; } else { $this->set($key, $value); } } } return $this; } function resetAll(?array $values): IArray { $this->data = []; return $this->addAll($values); } }