%PDF- %PDF-
Direktori : /var/www/pjc/vendor/graham-campbell/flysystem/src/ |
Current File : /var/www/pjc/vendor/graham-campbell/flysystem/src/FlysystemServiceProvider.php |
<?php declare(strict_types=1); /* * This file is part of Laravel Flysystem. * * (c) Graham Campbell <hello@gjcampbell.co.uk> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace GrahamCampbell\Flysystem; use GrahamCampbell\Flysystem\Adapter\ConnectionFactory as AdapterFactory; use GrahamCampbell\Flysystem\Cache\ConnectionFactory as CacheFactory; use Illuminate\Contracts\Container\Container; use Illuminate\Foundation\Application as LaravelApplication; use Illuminate\Support\ServiceProvider; use Laravel\Lumen\Application as LumenApplication; use League\Flysystem\Filesystem; use League\Flysystem\FilesystemInterface; /** * This is the flysystem service provider class. * * @author Graham Campbell <hello@gjcampbell.co.uk> */ class FlysystemServiceProvider extends ServiceProvider { /** * Boot the service provider. * * @return void */ public function boot() { $this->setupConfig(); } /** * Setup the config. * * @return void */ protected function setupConfig() { $source = realpath($raw = __DIR__.'/../config/flysystem.php') ?: $raw; if ($this->app instanceof LaravelApplication && $this->app->runningInConsole()) { $this->publishes([$source => config_path('flysystem.php')]); } elseif ($this->app instanceof LumenApplication) { $this->app->configure('flysystem'); } $this->mergeConfigFrom($source, 'flysystem'); } /** * Register the service provider. * * @return void */ public function register() { $this->registerAdapterFactory(); $this->registerCacheFactory(); $this->registerFlysystemFactory(); $this->registerManager(); $this->registerBindings(); } /** * Register the adapter factory class. * * @return void */ protected function registerAdapterFactory() { $this->app->singleton('flysystem.adapterfactory', function () { return new AdapterFactory(); }); $this->app->alias('flysystem.adapterfactory', AdapterFactory::class); } /** * Register the cache factory class. * * @return void */ protected function registerCacheFactory() { $this->app->singleton('flysystem.cachefactory', function (Container $app) { $cache = $app->bound('cache') ? $app->make('cache') : null; return new CacheFactory($cache); }); $this->app->alias('flysystem.cachefactory', CacheFactory::class); } /** * Register the flysystem factory class. * * @return void */ protected function registerFlysystemFactory() { $this->app->singleton('flysystem.factory', function (Container $app) { $adapter = $app['flysystem.adapterfactory']; $cache = $app['flysystem.cachefactory']; return new FlysystemFactory($adapter, $cache); }); $this->app->alias('flysystem.factory', FlysystemFactory::class); } /** * Register the manager class. * * @return void */ protected function registerManager() { $this->app->singleton('flysystem', function (Container $app) { $config = $app['config']; $factory = $app['flysystem.factory']; return new FlysystemManager($config, $factory); }); $this->app->alias('flysystem', FlysystemManager::class); } /** * Register the bindings. * * @return void */ protected function registerBindings() { $this->app->bind('flysystem.connection', function (Container $app) { $manager = $app['flysystem']; return $manager->connection(); }); $this->app->alias('flysystem.connection', Filesystem::class); $this->app->alias('flysystem.connection', FilesystemInterface::class); } /** * Get the services provided by the provider. * * @return string[] */ public function provides() { return [ 'flysystem.adapterfactory', 'flysystem.cachefactory', 'flysystem.factory', 'flysystem', 'flysystem.connection', ]; } }