42 lines
1.3 KiB
PHP
42 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use App\Domains\Translation\Providers\DatabaseTranslationLoader;
|
|
use App\Domains\Workspace\Models\Workspace;
|
|
use App\Domains\Workspace\Policies\WorkspacePolicy;
|
|
use Illuminate\Support\Facades\Gate;
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Register any application services.
|
|
*/
|
|
public function register(): void
|
|
{
|
|
$this->app->singleton('translation.loader', fn() => new DatabaseTranslationLoader);
|
|
|
|
// TranslationServiceProvider is deferred and re-binds translation.loader
|
|
// when it resolves. We extend 'translator' to swap in our DB loader after
|
|
// the translator instance is created.
|
|
$this->app->extend('translator', function ($translator, $app) {
|
|
$loader = new DatabaseTranslationLoader;
|
|
// Keep the singleton up-to-date so app('translation.loader') returns ours.
|
|
$app->instance('translation.loader', $loader);
|
|
$prop = new \ReflectionProperty($translator, 'loader');
|
|
$prop->setValue($translator, $loader);
|
|
|
|
return $translator;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Bootstrap any application services.
|
|
*/
|
|
public function boot(): void
|
|
{
|
|
Gate::policy(Workspace::class, WorkspacePolicy::class);
|
|
}
|
|
}
|