[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/vendor/spomky-labs/cbor-php/src/ -> ListObject.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 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  }


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