1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-05 06:24:04 +00:00

Make resolving 'url' return a pre-created generator instance instead of creating it on every app('url') call

This commit is contained in:
lukinovec 2024-08-29 16:02:28 +02:00
parent ab02d2885c
commit 2266c47722

View file

@ -37,7 +37,7 @@ class UrlGeneratorBootstrapper implements TenancyBootstrapper
public function revert(): void public function revert(): void
{ {
$this->app->bind('url', fn () => $this->originalUrlGenerator); $this->app->extend('url', fn () => $this->originalUrlGenerator);
} }
/** /**
@ -47,24 +47,22 @@ class UrlGeneratorBootstrapper implements TenancyBootstrapper
*/ */
protected function useTenancyUrlGenerator(): void protected function useTenancyUrlGenerator(): void
{ {
$this->app->extend('url', function (UrlGenerator $urlGenerator, Application $app) { $newGenerator = new TenancyUrlGenerator(
$newGenerator = new TenancyUrlGenerator( $this->app['router']->getRoutes(),
$app['router']->getRoutes(), $this->originalUrlGenerator->getRequest(),
$urlGenerator->getRequest(), $this->app['config']->get('app.asset_url'),
$app['config']->get('app.asset_url'), );
);
$newGenerator->defaults($urlGenerator->getDefaultParameters()); $newGenerator->defaults($this->originalUrlGenerator->getDefaultParameters());
$newGenerator->setSessionResolver(function () { $newGenerator->setSessionResolver(function () {
return $this->app['session'] ?? null; return $this->app['session'] ?? null;
});
$newGenerator->setKeyResolver(function () {
return $this->app->make('config')->get('app.key');
});
return $newGenerator;
}); });
$newGenerator->setKeyResolver(function () {
return $this->app->make('config')->get('app.key');
});
$this->app->extend('url', fn () => $newGenerator);
} }
} }