2 Stimmen

Doctrine 2 ORM und WordPress - Zentralisierung der Doctrine-Verwaltung für mehrere abhängige Anwendungen

In WordPress werden Plugins erstellt und als Pakete verteilt, die andere WordPress-Benutzer installieren können.

Jedes der Plugins, die ich erstelle, hat bestimmte gemeinsame Elemente in einem Kern-Plugin. Ich habe Probleme mit der Erstellung und Verwaltung der EntitiyManager unter diesen Plugins zu verwenden.

Ich habe mir zwei Möglichkeiten ausgedacht, wie man das umsetzen kann, und würde gerne ein paar Rückmeldungen hören, bevor ich weitermache:

Option 1: Einzelner, globaler 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

Das Problem bei dieser Version ist, dass es zwar eine Möglichkeit gibt, Pfade zu einer MetadataDriver :

$entityManager->getConfig()->getMetadataDriverImpl()->addPaths();

Ich bin mir nicht sicher, ob dies tatsächlich zu einer Aktualisierung der MetadataDriver innerhalb der config dieser EntityManager . Meine Befürchtung ist, dass dies nur zu einer config die mit den neuen Pfaden aktualisiert wurde, und nicht die EntityManager Konfiguration.

Ist das wahr?

Es ist zu beachten, dass es keine setConfig Funktion. Wenn dies der Fall ist, müsste ich die EntityManager von jedem Plugin, was den Zweck einer zentralisierten EntityManager .

Option 2: Mehrere 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

Das Problem bei dieser Umsetzung ist, dass sie ineffizient erscheint. Ich habe bemerkt, dass es ein Doctrine-Plugin für WordPress gibt, obwohl es Doctrine 1.2.3 ist, und es erlaubt Ihnen, einen zentralen Ort zu haben, wie ich annehmen würde, ist für die Verwaltung von Anwendungen geeignet, die Ressourcen wie die Zentrale Entitäten .

Was halten Sie von der Verwendung der Doktrin in diesem Szenario? Gibt es eine Möglichkeit, die Operationen zu zentralisieren, so dass der ORM über ein zentrales Plugin verwaltet wird, von dem andere abhängen?

1voto

Matt Punkte 5367

Das habe ich herausfinden können:

$entityManager->getConfiguration()->getMetadataDriverImpl()->addPaths();

fügt in der Tat zusätzliche Pfade zum $entityManager Objekt und nicht nur auf die Konfiguration, die mit getConfiguration .

Ich werde diese Implementierung weiter ausarbeiten und meine Ergebnisse hier veröffentlichen. Hoffentlich kann der Kern als Plugin für andere Programmierer zu verwenden verteilt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X