← Встановлення Doctrine Behaviors
docs: Doctrine section with Doctrine Behaviors and Doctrine Helper (uk + en)
uk/docs/doctrine/doctrine-behaviors/installation.md
новий файл +97
−0
Встановлення Doctrine Behaviors
Вимоги: 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 (див. Виправлені помилки).
Крок 0: Рецепти Symfony Flex
Щоб Flex зареєстрував бандл автоматично, додайте репозиторій рецептів UFO-Tech у composer.json проєкту:
{
"extra": {
"symfony": {
"endpoint": [
"https://api.github.com/repos/ufo-tech/recipes/contents/index.json?ref=main",
"flex://defaults"
]
}
}
}
Крок 1: Встановлення
composer require ufo-tech/doctrine-behaviors
Рецепт лише додає бандл у config/bundles.php; конфігураційних файлів він не створює.
Крок 2: Реєстрація бандла
Без рецепта додайте вручну в config/bundles.php:
return [
// ...
Ufo\DoctrineBehaviors\DoctrineBehaviorsBundle::class => ['all' => true],
];
Окремого розділу конфігурації (doctrine_behaviors:) у бандла немає: значення за замовчуванням змінюються параметрами контейнера — див. Налаштування.
Крок 3: Перша поведінка
Додайте інтерфейс і трейт до сутності:
use Doctrine\ORM\Mapping as ORM;
use Ufo\DoctrineBehaviors\Contract\Entity\TimestampableInterface;
use Ufo\DoctrineBehaviors\Model\Timestampable\TimestampableTrait;
#[ORM\Entity]
class Category implements TimestampableInterface
{
use TimestampableTrait;
#[ORM\Id, ORM\GeneratedValue, ORM\Column]
private ?int $id = null;
}
Крок 4: Схема бази даних
Бандл змінює мапінг сутностей, тому оновіть схему — міграцією:
bin/console doctrine:migrations:diff
bin/console doctrine:migrations:migrate
або напряму (для розробки):
bin/console doctrine:schema:update --force
Які колонки додає бандл, видно в SQL: bin/console doctrine:schema:update --dump-sql.
Слухачі бандла зареєстровані лише для з'єднання Doctrine default. Сутності, якими керує менеджер іншого з'єднання, поведінок не отримують — див. Відомі помилки.
PHPStan
У пакеті є розширення PHPStan, що уточнює типи translate(), getTranslations() і getTranslatable(). З phpstan/extension-installer воно підключається автоматично; без нього додайте в phpstan.neon:
includes:
- vendor/ufo-tech/doctrine-behaviors/phpstan-extension.neon
Що далі?
- Налаштування — параметри й провайдери.
- Timestampable, Blameable, SoftDeletable, Translatable — найуживаніші поведінки.