Kern

Config-Service

Um auf eine beliebige Config-Variable zuzugreifen, die in den h0stware-Einstellungen oder in einem Modul gesetzt wurde, kannst Du die Klasse ConfigService verwenden.

Auf den Config-Service zugreifen

Um auf den Config-Service zuzugreifen, kannst Du – wie überall sonst auch – die Laravel-Dependency-Injection-Funktion app() verwenden. Diese gibt die angeforderte Klasseninstanz zurück.

Werte speichern

Um Config-Werte zu speichern, kannst Du die Funktion save() des Config-Services verwenden. Die Funktion nimmt als ersten Parameter ein Array aus Key-Value-Paaren von Config-Elementen und als zweiten Parameter den Boolean salesChannelAware.

Wenn Du salesChannelAware auf true lässt, werden die Config-Elemente in den aktuell aktiven Sales Channel geschrieben. Wenn Du ihn auf false setzt, werden die Config-Elemente in den globalen Geltungsbereich aller Sales Channels in h0stware geschrieben.

Siehe das folgende Beispiel, um Config-Einträge im aktuell ausgewählten Sales Channel oder im globalen Geltungsbereich zu speichern:

$configArray = [
    "HwMollie.sandbox" => false,
    "HwMollie.key.live" => "live key"
];

// save the config
app(ConfigService::class)->save($configArray);

app(ConfigService::class)->save($configArray, false); // save to global scope

Config-Wert(e) abrufen

Um einen Wert über den Key abzurufen, kannst Du die Funktion get() des Config-Services verwenden. Die Funktion nimmt als ersten Parameter den Key des angeforderten Config-Elements und als zweiten Parameter den Boolean salesChannelAware.

Die Keys verwenden immer die Punktnotation (.), um Bereiche von Config-Werten anzugeben. Wenn Du z. B. alle Config-Werte eines Punkt-Präfixes möchtest, kannst Du auch nur das Präfix als Key angeben. Sieh Dir das folgende Beispiel für ein besseres Verständnis an:

$configService = app(ConfigService::class);

$configService->get("HwMollie");
// returns following:
array:3 [▼
  "sandbox" => "false"
  "handler" => array:2 [▼
    "paysafecard" => "true"
    "useMollieLimits" => "true"
  ]
  "key" => array:2 [▼
    "live" => "vpsnow LIVE"
    "test" => "TEST api"
  ]
]

$configService->get("HwMollie.handler");
// returns following:
array:2 [▼
  "paysafecard" => "true"
  "useMollieLimits" => "true"
]

$configService->get("HwMollie.handler.paysafecard");
// returns following:
"true"

Elemente flach machen / entfalten

Wie Du bereits bemerkt hast, verwenden die Keys der Config-Elemente die Punktnotation:

array:3 [▼
  "HwMollie.sandbox" => "false"
  "HwMollie.handler.paysafecard" => "true"
  "HwMollie.key.live" => "livea"
]

Du kannst die Funktion unflattenConfigArray() des Config-Services verwenden, um aus der Punkt-Syntax ein mehrdimensionales Array zu erstellen:

array:1 [▼
  "HwMollie" => array:3 [▼
    "sandbox" => "false"
    "handler" => array:1 [▼
      "paysafecard" => "true"
    ]
    "key" => array:1 [▼
      "live" => "livea"
    ]
  ]

Umgekehrt kannst Du die Funktion flattenConfigArray() verwenden, um aus einem mehrdimensionalen Array ein eindimensionales Array in Punkt-Syntax zu erstellen, was z. B. zum Speichern der Config-Werte erforderlich ist.

War das hilfreich?