Laravel 5 Projektstruktur (Plugin-System)

9

Ich versuche meine erste Laravel (5) Anwendung zu entwickeln, die um Plugins erweitert werden kann. Ich habe viel über Plugin-Architekturen gelesen, aber mit dem ich Probleme habe, ist die beste oder bevorzugte Art, ein solches Projekt in Laravel zu organisieren. Ich wäre sehr dankbar für jede Hilfe und Rat hier, da ich nicht auf den falschen Weg gehen möchte.

So denke ich darüber nach, dies zu strukturieren und umzusetzen:

%Vor%

Frage 1: Wo wäre der beste Ort für das root / Plugins-Verzeichnis? Direkt in der App / root-Ordner oder irgendwo wie app / Http?

Beim Start der App möchte ich mit der PluginManager-Klasse das Plugins / Plugins / Unterverzeichnis durchsuchen, da dort alle installierten Plugins liegen. An diesem Punkt erstellt der PluginManager eine Reflektionsinstanz dieser Plugin-Klassen und speichert sie in einem Array, so dass sie später durchschleifen und Methoden aufrufen kann, falls sie existieren.

Frage 2: Soll der PluginMananger für alle Anfragen verfügbar sein, sollte ich dafür einen Service Provider und eine Facade verwenden?

Frage 3: Ist diese Methode effizient oder könnte jemand eine alternative Lösung anbieten?

Alle diese Plugins werden die PluginInterface-Schnittstelle implementieren, so dass die PluginManager-Klasse beispielsweise eine init () - Funktion für alle Plugins aufrufen kann.

Danke für Ihre Zeit

    
dpstudio 10.02.2015, 12:37
quelle

1 Antwort

1

Frage 1

Der einfachste Weg, dies zu tun, ist, ein Verzeichnis "app / Plugins" ("app / Http / Plugins") nur zu erstellen, wenn Ihre Plugins spezifisch für die Laravel Core-Anwendung oder das Routing @RTM : "Stellen Sie sich die Konsolen- und Http-Verzeichnisse als eine API in den" Kern "vor Ihrer Anwendung. ").

Frage 2

JA! @see: Leistungsproblem mit verzögerten Anbietern

Frage 3

Kann es sein, dass Sie eine Art plugins.lock in Ihrem Anwendungsstamm einrichten, um zu vermeiden, dass bei jeder Anfrage "app / Plugins" gescannt werden?

    
ShuifuraX 22.05.2015 10:07
quelle