PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 3.0.1
Defender Security – Malware Scanner, Login Security & Firewall v3.0.1
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / vendor / spomky-labs / cbor-php / src / ListObject.php

ListObject.php in Defender Security – Malware Scanner, Login Security & Firewall 3.0.1, at vendor/spomky-labs/cbor-php/src/ListObject.php

100 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }
100