share(function (Application $app) { return new JsonValidator(); }); $app['plugins.manifest-validator'] = $app->share(function (Application $app) { return ManifestValidator::create($app); }); $app['plugins.plugins-validator'] = $app->share(function (Application $app) { return new PluginValidator($app['plugins.manifest-validator']); }); $app['plugins.import-strategy'] = $app->share(function (Application $app) { return new ImportStrategy(); }); $app['plugins.autoloader-generator'] = $app->share(function (Application $app) { return new AutoloaderGenerator($app['plugins.directory']); }); $app['plugins.assets-manager'] = $app->share(function (Application $app) { return new AssetsManager($app['filesystem'], $app['plugins.directory'], $app['root.path']); }); $app['plugins.composer-installer'] = $app->share(function (Application $app) { $phpBinary = $app['conf']->get(['main', 'binaries', 'php_binary'], null); if (!is_executable($phpBinary)) { $finder = new PhpExecutableFinder(); $phpBinary = $finder->find(); } return new ComposerInstaller($app['composer-setup'], $app['plugins.directory'], $phpBinary); }); $app['plugins.explorer'] = $app->share(function (Application $app) { return new PluginsExplorer($app['plugins.directory']); }); $app['plugins.importer'] = $app->share(function (Application $app) { return new Importer($app['plugins.import-strategy'], [ 'plugins.importer.folder-importer' => $app['plugins.importer.folder-importer'], ]); }); $app['plugins.importer.folder-importer'] = $app->share(function (Application $app) { return new FolderImporter($app['filesystem']); }); } public function boot(Application $app) { } }