definition); } function offsetGet($offset) { if (!array_key_exists($offset, $this->definition)) return null; else return $this->definition[$offset]; } function offsetSet($offset, $value): void { throw new LogicException("read-only"); } function offsetUnset($offset): void { throw new LogicException("read-only"); } const _PROPERTY_PKEYS = []; function __get($name) { $pkey = cl::get(static::_PROPERTY_PKEYS, $name, $name); return cl::pget($this->definition, $pkey); } }