[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/vendor/spomky-labs/cbor-php/src/ -> InfiniteMapObject.php (source)

   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  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer