/** * @param Configuration\Configs $configs */ public function registerBundleEvents(Configuration\Configs $configs) { $this->detachEvents(); foreach ($configs->getConfigs() as $bundleConfig) { //register custom listener through config, like cache clearing, service calls etc if ($events = $bundleConfig->getListeners()) { foreach ($events as $event) { $this->attachEvent($event); } } //clear storage caches when object changes if ($objects = $bundleConfig->getObjects()) { foreach ($objects as $object) { $fn = function () use($object) { $storage = $this->container->get($object->getStorageService()); $storage->configure($object->getKey(), $object); $storage->clearCache(); }; $event = new Event(); $event->setSubject($object->getKey()); $event->setKey('core/object/modify'); $event->setCalls([$fn]); $this->attachEvent($event); } } } }