В WordPress плагины создаются и распространяются в виде пакетов для установки другими пользователями WordPress.
Каждый плагин, который я создаю, разделяет некоторые общие сущности в основном плагине. Я борюсь за создание и управление EntitiyManager
для использования среди этих плагинов.
Я предложил два способа реализации этого и хотел бы услышать некоторые отзывы, прежде чем двигаться вперед:
Вариант 1: Один глобальный EntityManager
// Example Plugin
// Unique Entities
// Add Unique Entity Paths and REQUIRED Entity Paths from Core Entities to EntityManager
// Example Plugin
// Unique Entities
// Add Unique Entity Paths and REQUIRED Entity Paths from Core Entities to EntityManager
// Core Plugin
// Core Entities
// Contains EntityManager
Проблема с этой версией заключается в том, что хотя есть способ добавить пути к MetadataDriver
:
$entityManager->getConfig()->getMetadataDriverImpl()->addPaths();
Я не уверен, что это действительно обновит MetadataDriver
в пределах config
этого EntityManager
. Меня беспокоит то, что это вернет только config
, который был обновлен с новыми путями, и не обновит конфигурацию EntityManager
.
Это правда?
Обратите внимание, что нет функции setConfig
, поэтому, если она есть, мне придется воссоздавать EntityManager
из каждого плагина, побеждая цель централизованного EntityManager
.
Вариант 2: Несколько EntityManager
// Example Plugin
// Unique Entities
// Create EntityManager with Unique Entity path and path to Core Entities that are required for this plugin.
// Core Plugin
// Core Entities
Проблема с этой реализацией в том, что она кажется неэффективной. Я заметил, что есть плагин Doctrine для WordPress, хотя это Doctrine 1.2.3, и он позволяет вам иметь одно централизованное место, которое, как я предполагаю, подходит для управления приложениями, которые совместно используют ресурсы, такие как Core Entities .
Что вы думаете об использовании Доктрины в этом сценарии? Есть ли способ централизовать операции так, чтобы управление ORM осуществлялось через один центральный плагин, от которого зависят другие?