data, true); } #function __debugInfo() { return $this->data; } function &array(): ?array { return $this->data; } function count(): int { return count($this->data); } function keys(): array { return array_keys($this->data); } function _has($key): bool { return $this->data !== null && array_key_exists($key, $this->data); } function &_get($key, $default=null) { if ($this->data !== null && array_key_exists($key, $this->data)) { return $this->data[$key]; } else return $default; } function _set($key, $value) { if ($key === null) $this->data[] = $value; else $this->data[$key] = $value; return $this; } function _del($key) { unset($this->data[$key]); return $this; } function offsetExists($key) { return $this->has($key); } function &offsetGet($key) { return $this->get($key); } function offsetSet($key, $value) { $this->set($key, $value); } function offsetUnset($key) { $this->del($key); } function __isset($name) { return $this->has($name); } function &__get($name) { return $this->get($name); } function __set($name, $value) { $this->set($name, $value); } function __unset($name) { $this->del($name); } }