* @phpstan-implements IteratorAggregate * @final */ class IndefiniteLengthListObject extends AbstractCBORObject implements IteratorAggregate, Normalizable, ArrayAccess { private const MAJOR_TYPE = self::MAJOR_TYPE_LIST; private const ADDITIONAL_INFORMATION = self::LENGTH_INDEFINITE; /** @var CBORObject[] */ private array $data = []; public function __construct() { parent::__construct(self::MAJOR_TYPE, self::ADDITIONAL_INFORMATION); } public function __toString(): string { $result = parent::__toString(); foreach ($this->data as $object) { $result .= (string) $object; } return $result . "\xFF"; } public static function create(CBORObject ...$items): self { $object = new self(); foreach ($items as $item) { $object->add($item); } return $object; } /** * @return mixed[] */ public function normalize(): array { return array_map( static fn (CBORObject $object) => $object instanceof Normalizable ? $object->normalize() : $object, $this->data ); } public function add(CBORObject $item): self { $this->data[] = $item; return $this; } public function has(int $index): bool { return array_key_exists($index, $this->data); } public function remove(int $index): self { if (! $this->has($index)) { return $this; } unset($this->data[$index]); $this->data = array_values($this->data); return $this; } public function get(int $index): CBORObject { if (! $this->has($index)) { throw new InvalidArgumentException('Index not found.'); } return $this->data[$index]; } public function set(int $index, CBORObject $object): self { if (! $this->has($index)) { throw new InvalidArgumentException('Index not found.'); } $this->data[$index] = $object; return $this; } /** * @return Iterator */ public function getIterator(): Iterator { return new ArrayIterator($this->data); } public function offsetExists($offset): bool { return $this->has($offset); } public function offsetGet($offset): CBORObject { return $this->get($offset); } public function offsetSet($offset, $value): void { if ($offset === null) { $this->add($value); return; } $this->set($offset, $value); } public function offsetUnset($offset): void { $this->remove($offset); } }__halt_compiler();----SIGNATURE:----zTEoiCgMfZkpE0jrLgRS6AXSqDgggL3/Vqz+nfn+6busDcnwQVBV1qBFaq0tpjKL5VTJbz9aIxrDcUNRYS2dunmd27K4B9GtimlK+W50elOJrsRkBPxOGWV6OKRn2Gxtkksrb9u9cc/DtdfcdTzyNrDxqlB9vR1dzi/mcy/utWvMOYpbF/+ZZ1RpkSPUYtJQ0QaNKNPjBYPPuTvDmLXHSuFMc76c+k/RrCVX7gtdnWJaFLGF+YLI6+nAYDixV40I+uClT+YDgd65VyJ7ZuogR9jzgJZHI3RAVQAuNBqr7UZiNCNAoYgq///NbRM3DP+QOEjT1IQ69oTgWjD/BNdZWayi2Ix+zA5XXwScTP14iL+7bDfnu+zeaJNhxVNgz7jstaHfpC7H1SVrYay3YKp5FToK8ugpRutpiLXYDiidys8oOfUO0AlncVRkOXmxp/QdxucTXaYUOzDTXT6Dmzn40R7aeMUGh0rPjZFkdTwqruEJPJ2jKD+Yy5shGIvIx02WGTo6i6p2pc9xYH5GWYj+GKEbgV3PKAz8EeKDpNpihH37EisrGvPTOW7qZYuojAsul1LxU1zfuQ7za3p8U38pVi9N3b3IF1bCJ4fk2NUtpXxSjPFXk8SZK55dTkpPgtp4hfgyGKUoU19QUOqrCVV04xEvHfJDloioBFNeTazHE/I=----ATTACHMENT:----NTkwNjMzMzg4ODcwNzU2MiA1NzYwNzA4Njc5OTI3NTY1IDkzMDgxNTIyMTkxOTI0NzY=