Расширения доктрины поведения
Этот пакет содержит расширения для Doctrine ORM и MongoDB ODM, которые предлагают новые функции или инструменты для более эффективного использования Doctrine. Эти поведения можно легко присоединить к системе событий Doctrine и обрабатывать сбрасываемые записи поведенческим способом.
Выпущена версия Doctrine Extensions 3.0
Версия 3.0 направлена на обновление этого пакета для современного PHP. Это включает в себя:
- Увеличение требований к минимальной версии PHP, Doctrine и других зависимостей.
- Реализация поддержки последних пакетов Doctrine MongoDB и Common.
- Обновление набора тестов, добавление стандартов кода и стиля, а также других необходимых инструментов сборки.
- Очистка документации, кода, комментариев и т. д.
Прочтите документ по обновлению для получения дополнительной информации.
Установка
composer require gedmo/doctrine-extensions
- Симфония
- Ларавел
- пластинки
Обновление
Расширения
ORM и MongoDB ODM
- Blameable — обновляет поля строки или ссылки при создании, обновлении и даже изменении свойства с помощью строки или объекта (например, пользователя).
- Loggable — помогает отслеживать изменения и историю объектов, также поддерживает управление версиями.
- Sluggable — объединяет указанные поля в один уникальный фрагмент.
- Временная метка — обновляет поля даты при создании, обновлении и даже изменении свойства.
- Translatable – предоставляет очень удобное решение для перевода записей на разные языки. Легко настроить, проще в использовании.
- Дерево — автоматизирует процесс обработки дерева и добавляет в репозиторий некоторые функции, специфичные для дерева. ( замыкание , вложенный набор или материализованный путь ) (MongoDB ODM поддерживает только материализованный путь)
Только ОРМ
- IpTraceable — унаследован от Timestampable, устанавливает IP-адрес вместо отметки времени.
- SoftDeleteable — позволяет неявно удалять записи
- Сортируемый — позволяет сортировать любой документ или объект.
- Загружаемый — обеспечивает обработку загрузки файлов в полях сущностей.
Только ODM MongoDB
- Ссылки — поддерживает связывание объектов в документах и наоборот.
- ReferenceIntegrity — ограничивает ссылки на документы ODM MongoDB.
Все расширения поддерживают сопоставление атрибутов , XML и аннотаций (устарело). Дополнительные драйверы сопоставления можно легко реализовать с помощью расширения Mapping для обработки дополнительного сопоставления метаданных.
Совместимость версий
- DBAL:
^3.2
(для всех расширений) или ^4.0
(для всех расширений, кроме Loggable ). - ОРМ:
^2.14
или ^3.0
- ODM MongoDB:
^2.3
Если вы настраиваете Entity Manager без платформы, см. пример, чтобы предотвратить такие проблемы, как # 1310.
XML-сопоставление
Сопоставление XML должно находиться в другом пространстве имен, объявленное пространство имен для расширений Doctrine — http://gediminasm.org/schemas/orm/doctrine-extensions-mapping. Итак, корневой узел теперь выглядит так:
< doctrine-mapping xmlns = " http://doctrine-project.org/schemas/orm/doctrine-mapping "
xmlns : gedmo = " http://gediminasm.org/schemas/orm/doctrine-extensions-mapping " >
...
</ doctrine-mapping >
Схемы xsd сопоставления XML также имеют версии и могут использоваться по суффиксу версии:
- Последняя версия - http://gediminasm.org/schemas/orm/doctrine-extensions-mapping.
- Версия 2.2.x — http://gediminasm.org/schemas/orm/doctrine-extensions-mapping-2-2
- Версия 2.1.x — http://gediminasm.org/schemas/orm/doctrine-extensions-mapping-2-1
Запуск тестов
Чтобы настроить и запустить тесты, выполните следующие действия:
- Установите Docker и убедитесь, что у вас есть
docker compose
- Из корня проекта запустите
docker compose up -d
, чтобы запустить контейнеры в режиме демона. - Войдите в контейнер через
docker compose exec php bash
(теперь вы находитесь в корневом каталоге: /var/www
) - Установите зависимости Composer через
composer install
- Запустите тесты:
vendor/bin/phpunit
Запуск примера
Чтобы настроить и запустить пример, выполните следующие действия:
- перейдите в корневой каталог расширений
- скачать композитор
- установить библиотеки разработки:
composer install
- отредактируйте
example/em.php
и настройте свою базу данных поверх файла - запустить:
php example/bin/console
или php example/bin/console
для консольных команд - запустите:
php example/bin/console orm:schema-tool:create
для создания схемы - запустите:
php example/bin/console app:print-category-translation-tree
, чтобы запустить пример для печати дерева перевода категорий.
Авторы
Спасибо всем, кто участвовал в разработке этих замечательных расширений Doctrine!
И особенно те, кто создает и поддерживает новые расширения:
- Лукас Боч Ибоч
- Густаво Адриан комфортно оцепенел
- Буссеке Жюль Гордонлондон
- Кудряшов Константин Эверзет
- Дэвид Бухманн dbu