protect(function ($databoxId) use ($app) { return function ($recordId, array $data) use ($app, $databoxId) { $recordReference = RecordReference::createFromDataboxIdAndRecordId($databoxId, $recordId); return new \caption_record($app, $recordReference, $data); }; }); $app['provider.repo.caption'] = $app->share(function (Application $app) { $connectionProvider = new DataboxConnectionProvider($app['phraseanet.appbox']); $factoryProvider = $app['provider.factory.caption']; $repositoryFactory = new CaptionRepositoryFactory($connectionProvider, $app['cache'], $factoryProvider); return new DataboxBoundRepositoryProvider($repositoryFactory); }); $app['service.caption'] = $app->share(function (Application $app) { return new CaptionService($app['provider.repo.caption']); }); } public function boot(Application $app) { $app['dispatcher']->addSubscriber(new CaptionCacheInvalider(new LazyLocator($app, 'provider.repo.caption'))); } }