Doctrine Helper

← Doctrine Helper

Ashterix

docs: Doctrine section with Doctrine Behaviors and Doctrine Helper (uk + en)

uk/docs/doctrine/doctrine-helper/README.md новий файл +52 −0

1 + # Doctrine Helper
2 +
3 + :::block class="package-card"
4 + <include>(docs/doctrine/doctrine-helper/.info.md)
5 + :::
6 +
7 + Набір готових трейтів, інтерфейсів і класів для Doctrine, які знімають рутину з опису сутностей: первинні ключі (автоінкремент, UUID, `uniqid`) і PHP enum як тип `ENUM` у MySQL.
8 +
9 + Це звичайна бібліотека, не Symfony-бандл: вона нічого не реєструє в контейнері й не має власної конфігурації. Трейти підключаються в сутність через `use`, тип enum реєструється в налаштуваннях Doctrine DBAL.
10 +
11 + ## Що всередині
12 +
13 + | Клас | Призначення |
14 + |------|-------------|
15 + | `Ufo\DoctrineHelper\Traits\AutoIncrementIdTrait` | Ціле автоінкрементне `id` |
16 + | `Ufo\DoctrineHelper\Traits\UuidIdTrait` | `id` — UUID v7, генерується в коді |
17 + | `Ufo\DoctrineHelper\Traits\UniqueIdTrait` | `id` — 13-символьний рядок `uniqid()` |
18 + | `Ufo\DoctrineHelper\Traits\UniqueUuidIdTrait` | Застарілий, замість нього — `UuidIdTrait` |
19 + | `Ufo\DoctrineHelper\Interfaces\IHaveUniqueUuid` | Контракт сутності з рядковим `id` |
20 + | `Ufo\DoctrineHelper\Interfaces\IHaveAutoincrementId` | Контракт сутності з цілим `id` |
21 + | `Ufo\DoctrineHelper\Utils\Uuid` | Генерація UUID v7 і детермінованого UUID v3 |
22 + | `Ufo\DoctrineHelper\DBAL\AbstractEnumType` | Базовий тип DBAL для PHP backed enum → `ENUM(...)` |
23 +
24 + ## Приклад
25 +
26 + ```php
27 + use Doctrine\ORM\Mapping as ORM;
28 + use Ufo\DoctrineHelper\Interfaces\IHaveUniqueUuid;
29 + use Ufo\DoctrineHelper\Traits\UuidIdTrait;
30 +
31 + #[ORM\Entity]
32 + class Order implements IHaveUniqueUuid
33 + {
34 + use UuidIdTrait; // #[ORM\Id], string(36), unique, getId(): string
35 +
36 + public function __construct()
37 + {
38 + $this->generateUniqueId(); // UUID v7
39 + }
40 + }
41 + ```
42 +
43 + ## Розділи
44 +
45 + * [Ідентифікатори сутностей](/docs/doctrine/doctrine-helper/entity_ids) — трейти первинних ключів, інтерфейси, `Uuid`.
46 + * [PHP enum як ENUM](/docs/doctrine/doctrine-helper/enum_type) — `AbstractEnumType`, реєстрація типу, обмеження.
47 + * [Історія змін](/docs/doctrine/doctrine-helper/change_log)
48 + * [Відомі помилки](/docs/doctrine/doctrine-helper/known_issues/open)
49 +
50 + :::info
51 + Документація описує версію 1.1.0 (2025-06-09). Залежності `doctrine/orm` і `doctrine/dbal` задекларовано в `composer.json` лише з 1.1.0; до того бібліотека вимагала тільки `ramsey/uuid`.
52 + :::

uk/docs/doctrine/doctrine-helper/.info.md новий файл +18 −0

1 + [![Версія](https://img.shields.io/packagist/v/ufo-tech/doctrine-helper?style=flat-square&label=версія&color=5f3dc4)](/docs/doctrine/doctrine-helper/change_log)
2 + [![Завантаження](https://img.shields.io/packagist/dt/ufo-tech/doctrine-helper?style=flat-square&label=завантажень&color=2f5aa8)](https://packagist.org/packages/ufo-tech/doctrine-helper/stats)
3 + [![Зірки](https://img.shields.io/github/stars/UFO-Tech/DoctrineHelper?style=flat-square&label=★&color=6b7785)](https://github.com/UFO-Tech/DoctrineHelper)
4 +
5 + ```bash
6 + composer require ufo-tech/doctrine-helper
7 + ```
8 +
9 + * **PHP** 8.3+
10 + * **Основа** Doctrine ORM 2.12+ · 3, DBAL 3.2+ · 4
11 + * **Тип** PHP-бібліотека
12 + * **Категорія** Doctrine
13 + * **Ліцензія** MIT
14 +
15 + [GitHub](https://github.com/UFO-Tech/DoctrineHelper)
16 + [Packagist](https://packagist.org/packages/ufo-tech/doctrine-helper)
17 + [Історія змін](/docs/doctrine/doctrine-helper/change_log)
18 + [Відомі помилки](/docs/doctrine/doctrine-helper/known_issues/open)