Einkaufswagen, Rechnung, ... Haben verschiedene Instanzen: Kunde Müller, Kunde Maier, Kunde Schulz, ... Instanzen sind zustandsbeha et: $customer1->lastName = 'Müller'; $customer2->lastName = 'Maier';
Muss ein Interface implementieren Hat keine äußeren Abhängigkeiten Kann von anderen services und data objects abhängen Instantiierung durch new oder einen factory service Instantiierung durch den DI container
COMPATIBILITY COMPATIBILITY Patch releases sind immer backward compatible Minor und major releases: Keine bc für Implementierungen! Bc nur für Interfaces die mit @stable annotiert sind!
class FooEventSubscriber implements EventSubscriberInterface { public function handleFooEvent(FooEvent $event) { $foo = $event->getFoo(); ... // Do something with foo return $event; } public static function getSubscribedEvents() { return [FooEvent::NAME => 'handleFooEvent']; } }
{ public function handleFooEvent(FooEvent $event) { $foo = $event->getFoo(); ... // Do something with foo return $event; } public static function getSubscribedEvents() { return [FooEvent::NAME => 'handleFooEvent']; } }
KEINEN EVENT GIBT? GIBT? Mail an [email protected] Eigene Implementierung schreiben, entweder in einem Modul oder eine Komponente Service überschreiben in var/configuration/configurable_services.yaml
Symfony DI container Container kann auch in Modulen verwendet werden (services.yaml) Funktionalitätserweiterung durch events Neue Erweiterungsmöglichkeit durch OXID Komponenten Eventsubscriber / console commands können shop aware sein System services können in der configurable_services.yaml überschrieben werden