Встановлення Doctrine Behaviors

← Встановлення Doctrine Behaviors

Ashterix

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

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

1 + # Встановлення Doctrine Behaviors
2 +
3 + :::info
4 + Вимоги: PHP 8.4+, Symfony ^7.0 або ^8.0, `doctrine/orm` ^3.7, `doctrine/dbal` ^4.2, `doctrine/persistence` ^4.0, `doctrine/doctrine-bundle` ^3.0, `symfony/security-bundle` ^7.0 | ^8.0. Для PHP 8.2–8.3, DBAL 3 чи DoctrineBundle 2 лишається 1.0.4, але в ній є помилки, виправлені лише в 2.0.0 (див. [Виправлені помилки](/docs/doctrine/doctrine-behaviors/known_issues/fixed)).
5 + :::
6 +
7 + ## Крок 0: Рецепти Symfony Flex
8 +
9 + Щоб Flex зареєстрував бандл автоматично, додайте репозиторій рецептів UFO-Tech у `composer.json` проєкту:
10 +
11 + ```json
12 + {
13 + "extra": {
14 + "symfony": {
15 + "endpoint": [
16 + "https://api.github.com/repos/ufo-tech/recipes/contents/index.json?ref=main",
17 + "flex://defaults"
18 + ]
19 + }
20 + }
21 + }
22 + ```
23 +
24 + ## Крок 1: Встановлення
25 +
26 + ```bash
27 + composer require ufo-tech/doctrine-behaviors
28 + ```
29 +
30 + Рецепт лише додає бандл у `config/bundles.php`; конфігураційних файлів він не створює.
31 +
32 + ## Крок 2: Реєстрація бандла
33 +
34 + Без рецепта додайте вручну в `config/bundles.php`:
35 +
36 + ```php
37 + return [
38 + // ...
39 + Ufo\DoctrineBehaviors\DoctrineBehaviorsBundle::class => ['all' => true],
40 + ];
41 + ```
42 +
43 + Окремого розділу конфігурації (`doctrine_behaviors:`) у бандла немає: значення за замовчуванням змінюються параметрами контейнера — див. [Налаштування](/docs/doctrine/doctrine-behaviors/config).
44 +
45 + ## Крок 3: Перша поведінка
46 +
47 + Додайте інтерфейс і трейт до сутності:
48 +
49 + ```php
50 + use Doctrine\ORM\Mapping as ORM;
51 + use Ufo\DoctrineBehaviors\Contract\Entity\TimestampableInterface;
52 + use Ufo\DoctrineBehaviors\Model\Timestampable\TimestampableTrait;
53 +
54 + #[ORM\Entity]
55 + class Category implements TimestampableInterface
56 + {
57 + use TimestampableTrait;
58 +
59 + #[ORM\Id, ORM\GeneratedValue, ORM\Column]
60 + private ?int $id = null;
61 + }
62 + ```
63 +
64 + ## Крок 4: Схема бази даних
65 +
66 + Бандл змінює мапінг сутностей, тому оновіть схему — міграцією:
67 +
68 + ```bash
69 + bin/console doctrine:migrations:diff
70 + bin/console doctrine:migrations:migrate
71 + ```
72 +
73 + або напряму (для розробки):
74 +
75 + ```bash
76 + bin/console doctrine:schema:update --force
77 + ```
78 +
79 + Які колонки додає бандл, видно в SQL: `bin/console doctrine:schema:update --dump-sql`.
80 +
81 + :::warning
82 + Слухачі бандла зареєстровані лише для з'єднання Doctrine `default`. Сутності, якими керує менеджер іншого з'єднання, поведінок не отримують — див. [Відомі помилки](/docs/doctrine/doctrine-behaviors/known_issues/open).
83 + :::
84 +
85 + ## PHPStan
86 +
87 + У пакеті є розширення PHPStan, що уточнює типи `translate()`, `getTranslations()` і `getTranslatable()`. З `phpstan/extension-installer` воно підключається автоматично; без нього додайте в `phpstan.neon`:
88 +
89 + ```yaml
90 + includes:
91 + - vendor/ufo-tech/doctrine-behaviors/phpstan-extension.neon
92 + ```
93 +
94 + ## Що далі?
95 +
96 + * [Налаштування](/docs/doctrine/doctrine-behaviors/config) — параметри й провайдери.
97 + * [Timestampable](/docs/doctrine/doctrine-behaviors/timestampable), [Blameable](/docs/doctrine/doctrine-behaviors/blameable), [SoftDeletable](/docs/doctrine/doctrine-behaviors/soft_deletable), [Translatable](/docs/doctrine/doctrine-behaviors/translatable) — найуживаніші поведінки.