FilesystemServiceProvider.php
TLDR
The FilesystemServiceProvider.php
file in the Illuminate\Filesystem
namespace is a service provider that registers the native and driver-based filesystem implementations in the Laravel application.
Methods
register
This method is responsible for registering the service provider. It calls the registerNativeFilesystem
and registerFlysystem
methods.
registerNativeFilesystem
This method registers the native filesystem implementation by binding the 'files'
key to a closure that returns a new instance of the Filesystem
class.
registerFlysystem
This method registers the driver based filesystem. It calls the registerManager
method and then binds the 'filesystem.disk'
and 'filesystem.cloud'
keys to closures that return the disk instances based on the default driver and the cloud driver configurations, respectively.
registerManager
This method registers the filesystem manager by binding the 'filesystem'
key to a closure that returns a new instance of the FilesystemManager
class.
getDefaultDriver
This method returns the default file driver configured in the application's filesystems configuration.
getCloudDriver
This method returns the default cloud-based file driver configured in the application's filesystems configuration.
Classes
FilesystemServiceProvider
The FilesystemServiceProvider
class is a Laravel service provider that registers the native and driver-based filesystem implementations. It extends the ServiceProvider
class and overrides the register
method to call the necessary registration methods.
<?php
namespace Illuminate\Filesystem;
use Illuminate\Support\ServiceProvider;
class FilesystemServiceProvider extends ServiceProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->registerNativeFilesystem();
$this->registerFlysystem();
}
/**
* Register the native filesystem implementation.
*
* @return void
*/
protected function registerNativeFilesystem()
{
$this->app->singleton('files', function () {
return new Filesystem;
});
}
/**
* Register the driver based filesystem.
*
* @return void
*/
protected function registerFlysystem()
{
$this->registerManager();
$this->app->singleton('filesystem.disk', function ($app) {
return $app['filesystem']->disk($this->getDefaultDriver());
});
$this->app->singleton('filesystem.cloud', function ($app) {
return $app['filesystem']->disk($this->getCloudDriver());
});
}
/**
* Register the filesystem manager.
*
* @return void
*/
protected function registerManager()
{
$this->app->singleton('filesystem', function ($app) {
return new FilesystemManager($app);
});
}
/**
* Get the default file driver.
*
* @return string
*/
protected function getDefaultDriver()
{
return $this->app['config']['filesystems.default'];
}
/**
* Get the default cloud based file driver.
*
* @return string
*/
protected function getCloudDriver()
{
return $this->app['config']['filesystems.cloud'];
}
}