Services
Wie wir im Bereich der Konfiguration gesehen haben, werden Services als Factories definiert:
"factories" => array(
"test" => array(\src\service\test::class, 'factory'),
"add" => array(\src\service\add::class, 'factory'),
),
Services stehen anschließend über den definierten Namen zur Verfügung. Im Bespiel über hubert()->test. Die Factory ist dabei eine statische Funktion.
<?php
namespace src\service;
class test {
public static function factory($hubert){
return new static();
}
public function returnTest(){
return "blub";
}
}
Ruft man $wert = hubert()->test->retrunTest() auf, erhält man $wert = "blub". Bei der erstmaligen Verwendung des Services wird die Factory ausgeführt. Ein weiteres Beispiel wäre ein Service, welcher eine direkt aufrufbare Funktion bereitstellt:
<?php
namespace src\service;
class add {
public static function factory($hubert){
return new static();
}
public function __invoke($a, $b){
return $a + $b;
}
}
In diesem Fall kann man über $c = hubert()->add(2,3) zwei Zahlen addieren. Die Services sind in der Konfiguration überschreibbar. Wird in einer Konfigurationsdatei, welche auf .global.php endet ein Service definiert, welcher auch in einer Datei, welche auf .local.php endet definiert ist, so wird nur der Service, welcher in der local-Datei definiert ist initialisiert.