Abstract Class Yiisoft\Db\Schema\Data\AbstractStructuredLazyArray
Represents an array value of a structured type retrieved from the database.
Initially, the value is a string that parsed into an array when it's accessed as an array or iterated over.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Db\Schema\Data\AbstractStructuredLazyArray | |
| count() | Yiisoft\Db\Schema\Data\LazyArrayTrait | |
| getIterator() | Yiisoft\Db\Schema\Data\LazyArrayTrait | |
| getRawValue() | The raw value that can be represented as: - a string retrieved value from the database that can be parsed into an array; - an array of values if the value is already parsed. | Yiisoft\Db\Schema\Data\LazyArrayTrait |
| getValue() | Returns parsed and typecasted value. | Yiisoft\Db\Schema\Data\LazyArrayTrait |
| jsonSerialize() | Yiisoft\Db\Schema\Data\LazyArrayTrait | |
| offsetExists() | Yiisoft\Db\Schema\Data\LazyArrayTrait | |
| offsetGet() | Yiisoft\Db\Schema\Data\LazyArrayTrait | |
| offsetSet() | Yiisoft\Db\Schema\Data\LazyArrayTrait | |
| offsetUnset() | Yiisoft\Db\Schema\Data\LazyArrayTrait |
Protected Methods
| Method | Description | Defined By |
|---|---|---|
| parse() | Parses the string retrieved value from the database into an array. | Yiisoft\Db\Schema\Data\AbstractStructuredLazyArray |
| phpTypecast() | Typecasts the structured values to PHP types according to the column schemas information. | Yiisoft\Db\Schema\Data\AbstractStructuredLazyArray |
| prepareValue() | Prepares the value to be used as an array or throws an exception if it's impossible. | Yiisoft\Db\Schema\Data\AbstractStructuredLazyArray |
Method Details
| public __construct( string $value, Yiisoft\Db\Schema\Column\ColumnInterface[] $columns = [] ): mixed | ||
| $value | string |
The string retrieved value from the database that can be parsed into an array. |
| $columns | Yiisoft\Db\Schema\Column\ColumnInterface[] |
The structured type columns that are used for value normalization and type casting. |
public function __construct(
string $value,
private readonly array $columns = [],
) {
$this->value = $value;
}
Defined in: Yiisoft\Db\Schema\Data\LazyArrayTrait::count()
| public count( ): integer |
public function count(): int
{
$this->prepareValue();
return count($this->value);
}
| public getIterator( ): ArrayIterator |
public function getIterator(): ArrayIterator
{
$this->prepareValue();
return new ArrayIterator($this->value);
}
Defined in: Yiisoft\Db\Schema\Data\LazyArrayTrait::getRawValue()
The raw value that can be represented as: - a string retrieved value from the database that can be parsed into an array; - an array of values if the value is already parsed.
| public getRawValue( ): array|string |
public function getRawValue(): array|string
{
return $this->value;
}
Defined in: Yiisoft\Db\Schema\Data\LazyArrayTrait::getValue()
Returns parsed and typecasted value.
| public getValue( ): array |
public function getValue(): array
{
$this->prepareValue();
return $this->value;
}
| public jsonSerialize( ): array |
public function jsonSerialize(): array
{
return $this->getValue();
}
| public offsetExists( integer|string $offset ): boolean | ||
| $offset | integer|string |
The offset to check. |
public function offsetExists(mixed $offset): bool
{
$this->prepareValue();
return isset($this->value[$offset]);
}
| public offsetGet( integer|string $offset ): mixed | ||
| $offset | integer|string |
The offset to retrieve. |
public function offsetGet(mixed $offset): mixed
{
$this->prepareValue();
return $this->value[$offset];
}
| public offsetSet( integer|string $offset, mixed $value ): void | ||
| $offset | integer|string |
The offset to assign the value to. |
| $value | mixed | |
public function offsetSet(mixed $offset, mixed $value): void
{
$this->prepareValue();
$this->value[$offset] = $value;
}
| public offsetUnset( integer|string $offset ): void | ||
| $offset | integer|string |
The offset to unset. |
public function offsetUnset(mixed $offset): void
{
$this->prepareValue();
unset($this->value[$offset]);
}
Parses the string retrieved value from the database into an array.
| protected abstract parse( string $value ): array|null | ||
| $value | string |
The string retrieved value from the database that can be parsed into an array. |
| return | array|null |
The parsed array or |
|---|---|---|
abstract protected function parse(string $value): ?array;
Typecasts the structured values to PHP types according to the column schemas information.
| protected phpTypecast( array $value ): array | ||
| $value | array | |
protected function phpTypecast(array $value): array
{
if (empty($this->columns)) {
return $value;
}
$fields = [];
$columnNames = array_keys($this->columns);
foreach ($value as $columnName => $item) {
$columnName = $columnNames[$columnName] ?? $columnName;
if (isset($this->columns[$columnName])) {
$fields[$columnName] = $this->columns[$columnName]->phpTypecast($item);
} else {
$fields[$columnName] = $item;
}
}
return $fields;
}
Prepares the value to be used as an array or throws an exception if it's impossible.
| protected prepareValue( ): void |
protected function prepareValue(): void
{
if (is_string($this->value)) {
$value = $this->parse($this->value);
if ($value === null) {
throw new InvalidArgumentException('Structured value must be a valid string representation.');
}
$this->value = $this->phpTypecast($value);
}
}
Signup or Login in order to comment.