Перейти к основному содержимому

Парсинг, парсеры свойств

Понятие парсинга

Парсинг — это процесс преобразования входных данных в объект целевого типа, в данном случае — объект Data-класса. В процессе парсинга могут происходить преобразования типов данных, а также применение различных правил для корректного заполнения свойств объекта.

Примитивные преобразования

Примитивные преобразования выполняются автоматически для таких типов данных, как строки, числа, булевы значения, массивы и объекты.

use Looqey\Speca\Data;

enum AlbumType: string {
case EP = 'ep';
case LIVE = 'live';
case LP = 'lp';
case COMPILATION = 'compilation';
case DEMO = 'demo';
}

class Album extends Data {
public function __construct(
public string $name,
public int $tracksCount,
public AlbumType $type
) {}
}

$album = Album::from(['name' => 'Dopethrone', 'tracksCount' => '8', 'type' => 'lp']);

В этом примере поле tracksCount автоматически преобразуется в тип int, а поле type будет приведено к одному из значений перечисления AlbumType.

Пользовательские преобразования

Для более сложных типов данных можно реализовать собственные правила преобразования с помощью парсеров.

Создание и использование парсера свойства

Для создания собственного парсера используются трансформеры - подробнее здесь