<?php declare(strict_types=1);
namespace Shopware\Core\Framework\DataAbstractionLayer\Field;
use Shopware\Core\Framework\DataAbstractionLayer\FieldSerializer\ListFieldSerializer;
use Shopware\Core\Framework\Feature;
use Shopware\Core\Framework\Log\Package;
/**
* Stores a JSON formatted value list. This can be typed using the third constructor parameter.
*
* Definition example:
*
* // allow every type
* new ListField('product_ids', 'productIds');
*
* // allow int types only
* new ListField('product_ids', 'productIds', IntField::class);
*
* Output in database:
*
* // mixed type value
* ['this is a string', 'another string', true, 15]
*
* // single type values
* [12,55,192,22]
*/
#[Package('core')]
class ListField extends JsonField
{
/**
* @var string|null
*/
private $fieldType;
/**
* @deprecated tag:v6.5.0 Property strict will be removed
*
* @var bool
*/
private $strict = false;
public function __construct(string $storageName, string $propertyName, ?string $fieldType = null)
{
parent::__construct($storageName, $propertyName);
$this->fieldType = $fieldType;
}
public function getFieldType(): ?string
{
return $this->fieldType;
}
/**
* Strict `ListField` does not support keys and will strip them on decode. Use `JsonField` instead.
*
* @deprecated tag:v6.5.0 - will be removed
*/
public function isStrict(): bool
{
if (!$this->strict) {
Feature::triggerDeprecationOrThrow(
'v6.5.0.0',
Feature::deprecatedMethodMessage(__CLASS__, __METHOD__, 'v6.5.0.0', 'JsonField')
);
}
return $this->strict;
}
/**
* Enable strict mode which forces the decode to return non-associative array. (json_encode will encode it as an array instead of an object)
*
* @deprecated tag:v6.5.0 - will be removed
*/
public function setStrict(bool $strict): ListField
{
if (!$strict) {
Feature::triggerDeprecationOrThrow(
'v6.5.0.0',
Feature::deprecatedMethodMessage(__CLASS__, __METHOD__, 'v6.5.0.0', 'JsonField')
);
}
$this->strict = $strict;
return $this;
}
protected function getSerializerClass(): string
{
return ListFieldSerializer::class;
}
}