in unserem aktuellen Projekt müssen wir ca. 4 eigene Plugins entwickeln, die allesamt Zugriff auf einen bestimmten Wert eines Kunden benötigen. Da dieser Wert für die unterschiedlichen Umgebungen (Produktion, Staging, Test) verschieden sein kann, dachten wir daran, diesen Wert in der config.php als Variable einzutragen und in den Plugins darauf zuzugreifen.
Die config.php ist nicht im Source Code Repository enthalten, sondern wird nach einem Deployment auf dem jeweiligen Server eingeschossen, liegt also schon auf jedem Server im File System.
Nun die Frage: Ist das eine gute Idee oder wo würdet Ihr generell solche Werte eintragen, um an diversen Stellen des eigenen Source Codes darauf zugreifen zu können?
EDIT: Wenn ich die globale Config mal etwas genauer betrachte scheint sie mir nicht wirklich darauf ausgelegt zu sein, um eigene Konfigurationen dort einzutragen und sodann im Code abzufragen.
Verstehe die Frage dazu nicht ganz bzw. sehe nicht das Problem zum Anliegen. Auf die Kundendaten kannst du fast überall drauf zugreifen. Ihr könnt ja auch die SW Session benutzen, so wie das Shopware eben auch macht.
Ok, konkretes Beispiel: Für einen bestimmten Shop Kunden X müssen wir z.B. nach einer Bestellung zusätzliche Arbeiten erledigen. Um nun in unseren Plugins erkennen zu können, dass eine Bestellung des Kunden X vorliegt, wollten wir dessen customernumber irgendwo fix hinterlegen (eben z.B. in der config.php). Dieser Wert wäre dann von überall und zu jeder Zeit abfragbar und muss pro Umgebung (Produktion, Staging, … einmal dort hinterlegt werden) - mit einer Session kriegst Du das nicht hin.
Ok, und wenn ihr für eurer Plugin eine Tabelle in der DB anlegt? Alternativ könnte man auch eine config.ini irgendwo ablegen. Also Möglichkeiten gibt es viele, um eben nicht die config.php zu überschreiben.
Gibt’s denn noch eine andere Config, die vielleicht nicht ganz so global ist und aber trotzdem noch über der Ebene der Plugin Configs liegt, damit man von allen eigenen Plugins drauf zugreifen kann?
Ansonsten geht das tatsächlich nur über eine DB Erweiterung?
Na ihr nutzt den DependencyContainer. Der eignet sich perfekt dafür, da Shopware dort alle Konfigurationen zur Verfügung stellt. Wie ihr darauf zugreift, kommt aber auf die Stelle an.
Hmm, naja rein theoretisch kannst du alles mögliche über die DB lösen. Eintrag in die s_core_config_elements oder s_user_attributes. Es gibt viele Plugin die auch eigene Tabellen anlegen. Das ist doch alles schnell gemacht. Über ein globales Plugin kann ja dann die Kundennumer im Backend eingestellt werden.