[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 declare(strict_types=1); 4 5 /* 6 * The MIT License (MIT) 7 * 8 * Copyright (c) 2018-2020 Spomky-Labs 9 * 10 * This software may be modified and distributed under the terms 11 * of the MIT license. See the LICENSE file for details. 12 */ 13 14 namespace CBOR; 15 16 use function array_key_exists; 17 use ArrayIterator; 18 use function count; 19 use Countable; 20 use InvalidArgumentException; 21 use Iterator; 22 use IteratorAggregate; 23 24 class ListObject extends AbstractCBORObject implements Countable, IteratorAggregate 25 { 26 private const MAJOR_TYPE = 0b100; 27 28 /** 29 * @var CBORObject[] 30 */ 31 private $data = []; 32 33 /** 34 * @var int|null 35 */ 36 private $length; 37 38 /** 39 * @param CBORObject[] $data 40 */ 41 public function __construct(array $data = []) 42 { 43 list($additionalInformation, $length) = LengthCalculator::getLengthOfArray($data); 44 array_map(static function ($item): void { 45 if (!$item instanceof CBORObject) { 46 throw new InvalidArgumentException('The list must contain only CBORObject objects.'); 47 } 48 }, $data); 49 50 parent::__construct(self::MAJOR_TYPE, $additionalInformation); 51 $this->data = $data; 52 $this->length = $length; 53 } 54 55 public function __toString(): string 56 { 57 $result = parent::__toString(); 58 if (null !== $this->length) { 59 $result .= $this->length; 60 } 61 foreach ($this->data as $object) { 62 $result .= (string) $object; 63 } 64 65 return $result; 66 } 67 68 public function add(CBORObject $object): void 69 { 70 $this->data[] = $object; 71 list($this->additionalInformation, $this->length) = LengthCalculator::getLengthOfArray($this->data); 72 } 73 74 public function get(int $index): CBORObject 75 { 76 if (!array_key_exists($index, $this->data)) { 77 throw new InvalidArgumentException('Index not found.'); 78 } 79 80 return $this->data[$index]; 81 } 82 83 public function getNormalizedData(bool $ignoreTags = false): array 84 { 85 return array_map(function (CBORObject $item) use ($ignoreTags) { 86 return $item->getNormalizedData($ignoreTags); 87 }, $this->data); 88 } 89 90 public function count(): int 91 { 92 return count($this->data); 93 } 94 95 public function getIterator(): Iterator 96 { 97 return new ArrayIterator($this->data); 98 } 99 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |