vendor/shopware/core/Framework/Struct/ArrayStruct.php line 11

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Framework\Struct;
  3. /**
  4.  * @template-covariant TKey
  5.  * @template-covariant TValue
  6.  *
  7.  * @implements \ArrayAccess<string, mixed>
  8.  */
  9. class ArrayStruct extends Struct implements \ArrayAccess
  10. {
  11.     /**
  12.      * @var array
  13.      */
  14.     protected $data;
  15.     /**
  16.      * @var string|null
  17.      */
  18.     protected $apiAlias;
  19.     public function __construct(array $data = [], ?string $apiAlias null)
  20.     {
  21.         $this->data $data;
  22.         $this->apiAlias $apiAlias;
  23.     }
  24.     public function has(string $property): bool
  25.     {
  26.         return \array_key_exists($property$this->data);
  27.     }
  28.     /**
  29.      * @deprecated tag:v6.5.0 - reason:return-type-change - return type will be changed to bool
  30.      */
  31.     #[\ReturnTypeWillChange]
  32.     public function offsetExists($offset)/* :bool */
  33.     {
  34.         return \array_key_exists($offset$this->data);
  35.     }
  36.     /**
  37.      * @deprecated tag:v6.5.0 - reason:return-type-change - return type will be changed to mixed
  38.      */
  39.     #[\ReturnTypeWillChange]
  40.     public function offsetGet($offset)/* :mixed */
  41.     {
  42.         return $this->data[$offset] ?? null;
  43.     }
  44.     public function offsetSet($offset$value): void
  45.     {
  46.         $this->data[$offset] = $value;
  47.     }
  48.     public function offsetUnset($offset): void
  49.     {
  50.         unset($this->data[$offset]);
  51.     }
  52.     /**
  53.      * @return mixed
  54.      */
  55.     public function get(string $key)
  56.     {
  57.         return $this->offsetGet($key);
  58.     }
  59.     /**
  60.      * @param string|int $key
  61.      * @param mixed      $value
  62.      *
  63.      * @return array
  64.      */
  65.     public function set($key$value)
  66.     {
  67.         return $this->data[$key] = $value;
  68.     }
  69.     public function assign(array $options)
  70.     {
  71.         $this->data array_replace_recursive($this->data$options);
  72.         return $this;
  73.     }
  74.     /**
  75.      * @return mixed
  76.      */
  77.     public function all()
  78.     {
  79.         return $this->data;
  80.     }
  81.     public function jsonSerialize(): array
  82.     {
  83.         $jsonArray parent::jsonSerialize();
  84.         // The key-values pairs from the property $data are now serialized in the JSON property "data". But the
  85.         // key-value pairs from data should appear in the serialization as they were properties of the ArrayStruct
  86.         // itself. Therefore the key-values moved one level up.
  87.         unset($jsonArray['data']);
  88.         $data $this->data;
  89.         $this->convertDateTimePropertiesToJsonStringRepresentation($data);
  90.         return array_merge($jsonArray$data);
  91.     }
  92.     public function getApiAlias(): string
  93.     {
  94.         return $this->apiAlias ?? 'array_struct';
  95.     }
  96.     public function getVars(): array
  97.     {
  98.         return $this->data;
  99.     }
  100. }