PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 3.1.0
Defender Security – Malware Scanner, Login Security & Firewall v3.1.0
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 / InfiniteMapObject.php

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

79 lines 1.8 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 ArrayIterator;
17 use function count;
18 use Countable;
19 use InvalidArgumentException;
20 use Iterator;
21 use IteratorAggregate;
22
23 final class InfiniteMapObject extends AbstractCBORObject implements Countable, IteratorAggregate
24 {
25 private const MAJOR_TYPE = 0b101;
26 private const ADDITIONAL_INFORMATION = 0b00011111;
27
28 /**
29 * @var MapItem[]
30 */
31 private $data = [];
32
33 public function __construct()
34 {
35 parent::__construct(self::MAJOR_TYPE, self::ADDITIONAL_INFORMATION);
36 }
37
38 public function __toString(): string
39 {
40 $result = parent::__toString();
41 foreach ($this->data as $object) {
42 $result .= (string) $object->getKey();
43 $result .= (string) $object->getValue();
44 }
45 $bin = hex2bin('FF');
46 if (false === $bin) {
47 throw new InvalidArgumentException('Unable to convert the data');
48 }
49 $result .= $bin;
50
51 return $result;
52 }
53
54 public function append(CBORObject $key, CBORObject $value): void
55 {
56 $this->data[] = new MapItem($key, $value);
57 }
58
59 public function count(): int
60 {
61 return count($this->data);
62 }
63
64 public function getIterator(): Iterator
65 {
66 return new ArrayIterator($this->data);
67 }
68
69 public function getNormalizedData(bool $ignoreTags = false): array
70 {
71 $result = [];
72 foreach ($this->data as $object) {
73 $result[$object->getKey()->getNormalizedData($ignoreTags)] = $object->getValue()->getNormalizedData($ignoreTags);
74 }
75
76 return $result;
77 }
78 }
79