← Встановлення Doctrine Behaviors
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) — найуживаніші поведінки.