<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Repositories\PageRepository; use App\Interfaces\PageRepositoryInterface; use App\Services\SettingsService; use App\Services\AuthService; use App\Services\ContentService; use App\Services\PaginateService; use App\Services\ThemeService; use App\Services\DocService; use App\Services\StringService; use App\Services\FileUploadService; use App\Services\RenderService; use App\Services\SortingService; use App\Services\AssetService; class FipamoServiceProvider extends ServiceProvider { /** * Register services. */ public function register(): void { //services $this->app->bind(SettingsService::class, function ($app) { return new SettingsService(new DocService()); }); $this->app->bind(AuthService::class, function ($app) { return new AuthService(new SettingsService(new DocService())); }); $this->app->bind(ContentService::class, function ($app) { return new ContentService(); }); $this->app->bind(ThemeService::class, function ($app) { return new ThemeService(new SettingsService(new DocService())); }); $this->app->bind(PaginateService::class, function ($app) { return new PaginateService(new ContentService()); }); $this->app->bind(StringService::class, function ($app) { return new StringService(); }); $this->app->bind(DocService::class, function ($app) { return new DocService(); }); $this->app->bind(FileUploadService::class, function ($app) { return new FileUploadService(); }); $this->app->bind(RenderService::class, function ($app) { return new RenderService( new SortingService( new SettingsService(new DocService()), new ContentService(), new StringService(), new ThemeService(new SettingsService(new DocService())) ), new SettingsService(new DocService()), new ContentService(), ); }); $this->app->bind(SortingService::class, function ($app) { return new SortingService( new SettingsService(new DocService()), new ContentService(), new StringService(), new ThemeService(new SettingsService(new DocService())) ); }); $this->app->bind(AssetService::class, function ($app) { return new AssetService( new ThemeService( new SettingsService(new DocService()) ) ); }); } /** * Bootstrap services. */ public function boot(): void { $this->app->bind(PageRepositoryInterface::class, PageRepository::class); } }