1<?php 2 3namespace Illuminate\Filesystem; 4 5use Illuminate\Support\ServiceProvider; 6 7class FilesystemServiceProvider extends ServiceProvider 8{ 9 /** 10 * Register the service provider. 11 * 12 * @return void 13 */ 14 public function register() 15 { 16 $this->registerNativeFilesystem(); 17 18 $this->registerFlysystem(); 19 } 20 21 /** 22 * Register the native filesystem implementation. 23 * 24 * @return void 25 */ 26 protected function registerNativeFilesystem() 27 { 28 $this->app->singleton('files', function () { 29 return new Filesystem; 30 }); 31 } 32 33 /** 34 * Register the driver based filesystem. 35 * 36 * @return void 37 */ 38 protected function registerFlysystem() 39 { 40 $this->registerManager(); 41 42 $this->app->singleton('filesystem.disk', function ($app) { 43 return $app['filesystem']->disk($this->getDefaultDriver()); 44 }); 45 46 $this->app->singleton('filesystem.cloud', function ($app) { 47 return $app['filesystem']->disk($this->getCloudDriver()); 48 }); 49 } 50 51 /** 52 * Register the filesystem manager. 53 * 54 * @return void 55 */ 56 protected function registerManager() 57 { 58 $this->app->singleton('filesystem', function ($app) { 59 return new FilesystemManager($app); 60 }); 61 } 62 63 /** 64 * Get the default file driver. 65 * 66 * @return string 67 */ 68 protected function getDefaultDriver() 69 { 70 return $this->app['config']['filesystems.default']; 71 } 72 73 /** 74 * Get the default cloud based file driver. 75 * 76 * @return string 77 */ 78 protected function getCloudDriver() 79 { 80 return $this->app['config']['filesystems.cloud']; 81 } 82} 83