<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; //Repos use App\Repositories\PageRepository; use App\Interfaces\PageRepositoryInterface; use App\Repositories\MemberRepository; use App\Interfaces\MemberRepositoryInterface; //Asset Services use App\Services\Assets\AssetService; use App\Services\Assets\DocService; use App\Services\Assets\FileUploadService; use App\Services\Assets\RenderService; //Data Services use App\Services\Data\SettingsService; use App\Services\Data\ContentService; use App\Services\Data\PaginateService; use App\Services\Data\ThemeService; use App\Services\Data\SortingService; //Upkeep Services use App\Services\Upkeep\MaintenanceService; use App\Services\Upkeep\InitService; class FipamoServiceProvider extends ServiceProvider { /** * Register services. */ public function register(): void { //services $this->app->bind(SettingsService::class, function ($app) { return new SettingsService(new DocService(), new ContentService()); }); $this->app->bind(ContentService::class, function ($app) { return new ContentService(); }); $this->app->bind(ThemeService::class, function ($app) { return new ThemeService(new SettingsService(new DocService(), new ContentService())); }); $this->app->bind(PaginateService::class, function ($app) { return new PaginateService(new ContentService()); }); $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 ContentService(), new ThemeService(new SettingsService(new DocService(), new ContentService())) ), new SettingsService(new DocService(), new ContentService()), new ContentService(), ); }); $this->app->bind(SortingService::class, function ($app) { return new SortingService( new SettingsService(new DocService(), new ContentService()), new ContentService(), new ThemeService(new SettingsService(new DocService(), new ContentService())) ); }); $this->app->bind(AssetService::class, function ($app) { return new AssetService( new ThemeService( new SettingsService(new DocService(), new ContentService()) ) ); }); $this->app->bind(MaintenanceService::class, function ($app) { return new MaintenanceService( new SettingsService(new DocService(), new ContentService()) ); }); $this->app->bind(InitService::class, function ($app) { return new InitService(new DocService()); }); } /** * Bootstrap services. */ public function boot(): void { $this->app->bind(PageRepositoryInterface::class, PageRepository::class); $this->app->bind(MemberRepositoryInterface::class, MemberRepository::class); } }