Doctrine Behaviors

← Doctrine Behaviors

Ashterix

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

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

1 + # Doctrine Behaviors
2 +
3 + :::block class="package-card"
4 + <include>(docs/doctrine/doctrine-behaviors/.info.md)
5 + :::
6 +
7 + Набір поведінок для сутностей Doctrine ORM у Symfony 7 / 8: часові мітки, автор змін, м'яке видалення, переклади, slug, дерева, UUID і журнал змін. Поведінка вмикається інтерфейсом і трейтом на сутності — бандл сам додає потрібні колонки в мапінг і заповнює їх у подіях Doctrine.
8 +
9 + :::info
10 + Пакет — форк [KnpLabs/DoctrineBehaviors](https://github.com/KnpLabs/DoctrineBehaviors) (через проміжний форк [Miets/DoctrineBehaviors](https://github.com/Miets/DoctrineBehaviors)). Оригінал не працює з Symfony новіше 6.3 і з DBAL 4; форк UFO-Tech оновлює код під Symfony 7+ / 8, Doctrine ORM 3 і DBAL 4. Ідеї, API і більшість коду — від авторів KnpLabs, ліцензія MIT.
11 + :::
12 +
13 + Документація описує версію 2.0.0.
14 +
15 + ## Як це виглядає
16 +
17 + ```php
18 + use Doctrine\ORM\Mapping as ORM;
19 + use Ufo\DoctrineBehaviors\Contract\Entity\SoftDeletableInterface;
20 + use Ufo\DoctrineBehaviors\Contract\Entity\TimestampableInterface;
21 + use Ufo\DoctrineBehaviors\Model\SoftDeletable\SoftDeletableTrait;
22 + use Ufo\DoctrineBehaviors\Model\Timestampable\TimestampableTrait;
23 +
24 + #[ORM\Entity]
25 + class Article implements TimestampableInterface, SoftDeletableInterface
26 + {
27 + use TimestampableTrait;
28 + use SoftDeletableTrait;
29 +
30 + #[ORM\Id, ORM\GeneratedValue, ORM\Column]
31 + private ?int $id = null;
32 + }
33 + ```
34 +
35 + Колонки `createdAt`, `updatedAt` і `deletedAt` з'являться в мапінгу без жодного `#[ORM\Column]`; часові мітки заповнюються під час `flush()`, а `$entityManager->remove($article)` лише проставляє `deletedAt`.
36 +
37 + ## Поведінки
38 +
39 + | Поведінка | Інтерфейс | Трейт | Що додає |
40 + | --- | --- | --- | --- |
41 + | [Timestampable](/docs/doctrine/doctrine-behaviors/timestampable) | `TimestampableInterface` | `TimestampableTrait` | `createdAt`, `updatedAt` |
42 + | [Blameable](/docs/doctrine/doctrine-behaviors/blameable) | `BlameableInterface` | `BlameableTrait` | `createdBy`, `updatedBy`, `deletedBy` |
43 + | [SoftDeletable](/docs/doctrine/doctrine-behaviors/soft_deletable) | `SoftDeletableInterface` | `SoftDeletableTrait` | `deletedAt`, видалення без `DELETE` |
44 + | [Translatable](/docs/doctrine/doctrine-behaviors/translatable) | `TranslatableInterface`, `TranslationInterface` | `TranslatableTrait`, `TranslationTrait` | зв'язок із сутністю перекладів, `locale` |
45 + | [Sluggable](/docs/doctrine/doctrine-behaviors/sluggable) | `SluggableInterface` | `SluggableTrait` | `slug` |
46 + | [Tree](/docs/doctrine/doctrine-behaviors/tree) | `TreeNodeInterface` | `TreeNodeTrait`, `TreeTrait` (репозиторій) | `materializedPath` |
47 + | [Uuidable](/docs/doctrine/doctrine-behaviors/uuidable) | `UuidableInterface` | `UuidableTrait` | `uuid` |
48 + | [Loggable](/docs/doctrine/doctrine-behaviors/loggable) | `LoggableInterface` | `LoggableTrait` | записи в PSR-3 логер |
49 +
50 + Інтерфейси лежать у `Ufo\DoctrineBehaviors\Contract\Entity`, трейти — у `Ufo\DoctrineBehaviors\Model\<Поведінка>`. Кожен трейт, крім `LoggableTrait`, складається з двох: `...PropertiesTrait` (властивості) і `...MethodsTrait` (методи) — їх можна підключати окремо, якщо властивості потрібно оголосити по-своєму.
51 +
52 + Колонку бандл додає, лише якщо поле з такою назвою ще не змаплене, тож тип чи довжину можна задати власним мапінгом.
53 +
54 + ## Розділи
55 +
56 + * [Встановлення](/docs/doctrine/doctrine-behaviors/installation)
57 + * [Налаштування](/docs/doctrine/doctrine-behaviors/config) — параметри контейнера, власні провайдери користувача й локалі.
58 + * Поведінки — посилання в таблиці вище.
59 + * [Історія змін](/docs/doctrine/doctrine-behaviors/change_log)
60 + * [Відомі помилки](/docs/doctrine/doctrine-behaviors/known_issues/open)

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

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