getByteLength(); $begin = $begin?: 0; $begin = $begin < -$max ? -$max : $begin; $end = $end === null || $end > $max ? $max : $end; if ($max < $begin || $begin >= $end || $end <= -$max) { return new static(); } return new static($end - $begin); } /** * @return \ArrayIterator|\Traversable */ public function getIterator() : \Traversable { return new \ArrayIterator(get_object_vars($this)); } }