Doctrine Helper
composer require ufo-tech/doctrine-helper
- PHP 8.3+
- Основа Doctrine ORM 2.12+ · 3, DBAL 3.2+ · 4
- Тип PHP-бібліотека
- Категорія Doctrine
- Ліцензія MIT
Набір готових трейтів, інтерфейсів і класів для Doctrine, які знімають рутину з опису сутностей: первинні ключі (автоінкремент, UUID, uniqid) і PHP enum як тип ENUM у MySQL.
Це звичайна бібліотека, не Symfony-бандл: вона нічого не реєструє в контейнері й не має власної конфігурації. Трейти підключаються в сутність через use, тип enum реєструється в налаштуваннях Doctrine DBAL.
Що всередині
| Клас | Призначення |
|---|---|
Ufo\DoctrineHelper\Traits\AutoIncrementIdTrait |
Ціле автоінкрементне id |
Ufo\DoctrineHelper\Traits\UuidIdTrait |
id — UUID v7, генерується в коді |
Ufo\DoctrineHelper\Traits\UniqueIdTrait |
id — 13-символьний рядок uniqid() |
Ufo\DoctrineHelper\Traits\UniqueUuidIdTrait |
Застарілий, замість нього — UuidIdTrait |
Ufo\DoctrineHelper\Interfaces\IHaveUniqueUuid |
Контракт сутності з рядковим id |
Ufo\DoctrineHelper\Interfaces\IHaveAutoincrementId |
Контракт сутності з цілим id |
Ufo\DoctrineHelper\Utils\Uuid |
Генерація UUID v7 і детермінованого UUID v3 |
Ufo\DoctrineHelper\DBAL\AbstractEnumType |
Базовий тип DBAL для PHP backed enum → ENUM(...) |
Приклад
use Doctrine\ORM\Mapping as ORM;
use Ufo\DoctrineHelper\Interfaces\IHaveUniqueUuid;
use Ufo\DoctrineHelper\Traits\UuidIdTrait;
#[ORM\Entity]
class Order implements IHaveUniqueUuid
{
use UuidIdTrait; // #[ORM\Id], string(36), unique, getId(): string
public function __construct()
{
$this->generateUniqueId(); // UUID v7
}
}
Розділи
- Ідентифікатори сутностей — трейти первинних ключів, інтерфейси,
Uuid. - PHP enum як ENUM —
AbstractEnumType, реєстрація типу, обмеження. - Історія змін
- Відомі помилки
Документація описує версію 1.1.0 (2025-06-09). Залежності doctrine/orm і doctrine/dbal задекларовано в composer.json лише з 1.1.0; до того бібліотека вимагала тільки ramsey/uuid.