[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/vendor/spomky-labs/cbor-php/src/ -> InfiniteListObject.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 InfiniteListObject extends AbstractCBORObject implements Countable, IteratorAggregate
  24  {
  25      private const MAJOR_TYPE = 0b100;
  26      private const ADDITIONAL_INFORMATION = 0b00011111;
  27  
  28      /**
  29       * @var CBORObject[]
  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;
  43          }
  44          $bin = hex2bin('FF');
  45          if (false === $bin) {
  46              throw new InvalidArgumentException('Unable to convert the data');
  47          }
  48          $result .= $bin;
  49  
  50          return $result;
  51      }
  52  
  53      public function getNormalizedData(bool $ignoreTags = false): array
  54      {
  55          return array_map(function (CBORObject $item) use ($ignoreTags) {
  56              return $item->getNormalizedData($ignoreTags);
  57          }, $this->data);
  58      }
  59  
  60      public function add(CBORObject $item): void
  61      {
  62          $this->data[] = $item;
  63      }
  64  
  65      public function count(): int
  66      {
  67          return count($this->data);
  68      }
  69  
  70      public function getIterator(): Iterator
  71      {
  72          return new ArrayIterator($this->data);
  73      }
  74  }


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