diff --git a/framework/core/src/Extend/Frontend.php b/framework/core/src/Extend/Frontend.php index e4927696a..cd3d0abc0 100644 --- a/framework/core/src/Extend/Frontend.php +++ b/framework/core/src/Extend/Frontend.php @@ -16,6 +16,7 @@ use Flarum\Frontend\Assets; use Flarum\Frontend\Compiler\Source\SourceCollector; use Flarum\Frontend\Frontend as ActualFrontend; use Flarum\Frontend\RecompileFrontendAssets; +use Flarum\Http\RouteCollection; use Flarum\Http\RouteHandlerFactory; use Illuminate\Contracts\Container\Container; @@ -122,15 +123,20 @@ class Frontend implements ExtenderInterface return; } - $routes = $container->make("flarum.$this->frontend.routes"); - $factory = $container->make(RouteHandlerFactory::class); + $container->resolving( + "flarum.{$this->frontend}.routes", + function (RouteCollection $collection, Container $container) { + /** @var RouteHandlerFactory $factory */ + $factory = $container->make(RouteHandlerFactory::class); - foreach ($this->routes as $route) { - $routes->get( - $route['path'], $route['name'], - $factory->toFrontend($this->frontend, $route['content']) - ); - } + foreach ($this->routes as $route) { + $collection->get( + $route['path'], $route['name'], + $factory->toFrontend($this->frontend, $route['content']) + ); + } + } + ); } private function registerContent(Container $container) diff --git a/framework/core/src/Extend/LanguagePack.php b/framework/core/src/Extend/LanguagePack.php index d51c228e7..b956a4746 100644 --- a/framework/core/src/Extend/LanguagePack.php +++ b/framework/core/src/Extend/LanguagePack.php @@ -37,8 +37,16 @@ class LanguagePack implements ExtenderInterface, LifecycleInterface ); } - /** @var LocaleManager $locales */ - $locales = $container->make(LocaleManager::class); + $container->resolving( + LocaleManager::class, + function (LocaleManager $locales) use ($extension, $locale, $title) { + $this->registerLocale($locales, $extension, $locale, $title); + } + ); + } + + private function registerLocale(LocaleManager $locales, Extension $extension, $locale, $title) + { $locales->addLocale($locale, $title); $directory = $extension->getPath().'/locale'; diff --git a/framework/core/src/Extend/Locales.php b/framework/core/src/Extend/Locales.php index fab28553a..f68892b14 100644 --- a/framework/core/src/Extend/Locales.php +++ b/framework/core/src/Extend/Locales.php @@ -27,33 +27,35 @@ class Locales implements ExtenderInterface, LifecycleInterface public function extend(Container $container, Extension $extension = null) { - /** @var LocaleManager $locales */ - $locales = $container->make(LocaleManager::class); + $container->resolving( + LocaleManager::class, + function (LocaleManager $locales) { + foreach (new DirectoryIterator($this->directory) as $file) { + if (! $file->isFile()) { + continue; + } - foreach (new DirectoryIterator($this->directory) as $file) { - if (! $file->isFile()) { - continue; + $extension = $file->getExtension(); + if (! in_array($extension, ['yml', 'yaml'])) { + continue; + } + + $locales->addTranslations( + $file->getBasename(".$extension"), + $file->getPathname() + ); + } } - - $extension = $file->getExtension(); - if (! in_array($extension, ['yml', 'yaml'])) { - continue; - } - - $locales->addTranslations( - $file->getBasename(".$extension"), - $file->getPathname() - ); - } + ); } public function onEnable(Container $container, Extension $extension) { - $container->make('flarum.locales')->clearCache(); + $container->make(LocaleManager::class)->clearCache(); } public function onDisable(Container $container, Extension $extension) { - $container->make('flarum.locales')->clearCache(); + $container->make(LocaleManager::class)->clearCache(); } } diff --git a/framework/core/src/Extend/Routes.php b/framework/core/src/Extend/Routes.php index 2d3cc71ab..dae7d17d4 100644 --- a/framework/core/src/Extend/Routes.php +++ b/framework/core/src/Extend/Routes.php @@ -12,6 +12,7 @@ namespace Flarum\Extend; use Flarum\Extension\Extension; +use Flarum\Http\RouteCollection; use Flarum\Http\RouteHandlerFactory; use Illuminate\Contracts\Container\Container; @@ -69,19 +70,21 @@ class Routes implements ExtenderInterface return; } - /** @var \Flarum\Http\RouteCollection $collection */ - $collection = $container->make("flarum.{$this->appName}.routes"); + $container->resolving( + "flarum.{$this->appName}.routes", + function (RouteCollection $collection, Container $container) { + /** @var RouteHandlerFactory $factory */ + $factory = $container->make(RouteHandlerFactory::class); - /** @var RouteHandlerFactory $factory */ - $factory = $container->make(RouteHandlerFactory::class); - - foreach ($this->routes as $route) { - $collection->addRoute( - $route['method'], - $route['path'], - $route['name'], - $factory->toController($route['handler']) - ); - } + foreach ($this->routes as $route) { + $collection->addRoute( + $route['method'], + $route['path'], + $route['name'], + $factory->toController($route['handler']) + ); + } + } + ); } }