Doctrine DBAL types for php-ds structures.
Type names map 1:1 with php-ds structures:
set=>Ds\Set(JSON array)vector=>Ds\Vector(JSON array)deque=>Ds\Deque(JSON array)stack=>Ds\Stack(JSON array)queue=>Ds\Queue(JSON array)map=>Ds\Map(JSON object)priority_queue=>Ds\PriorityQueue(PHPserialize()string)pair=>Ds\Pair(PHPserialize()string)
composer require sbolch/doctrine-ds-types- PHP 8.4+
ext-dsorphp-ds/php-ds- Doctrine DBAL 3.x or 4.x
use Doctrine\DBAL\Types\Type;
use sbolch\DoctrineDsTypes\Type\SetType;
use sbolch\DoctrineDsTypes\Type\VectorType;
use sbolch\DoctrineDsTypes\Type\DequeType;
use sbolch\DoctrineDsTypes\Type\StackType;
use sbolch\DoctrineDsTypes\Type\QueueType;
use sbolch\DoctrineDsTypes\Type\MapType;
use sbolch\DoctrineDsTypes\Type\PriorityQueueType;
use sbolch\DoctrineDsTypes\Type\PairType;
Type::addType('set', SetType::class);
Type::addType('vector', VectorType::class);
Type::addType('deque', DequeType::class);
Type::addType('stack', StackType::class);
Type::addType('queue', QueueType::class);
Type::addType('map', MapType::class);
Type::addType('priority_queue', PriorityQueueType::class);
Type::addType('pair', PairType::class);doctrine:
dbal:
types:
set: sbolch\DoctrineDsTypes\Type\SetType
vector: sbolch\DoctrineDsTypes\Type\VectorType
deque: sbolch\DoctrineDsTypes\Type\DequeType
stack: sbolch\DoctrineDsTypes\Type\StackType
queue: sbolch\DoctrineDsTypes\Type\QueueType
map: sbolch\DoctrineDsTypes\Type\MapType
priority_queue: sbolch\DoctrineDsTypes\Type\PriorityQueueType
pair: sbolch\DoctrineDsTypes\Type\PairType#[ORM\Column(type: 'set')]
public Set $roles;- JSON-backed types store
nullasnulland readnullback tonull. priority_queueusesserialize()becauseDs\PriorityQueuedoes not expose priorities via its public API.pairusesserialize()becauseDs\Pairis not JSON-serializable.