for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/*
* This file is part of the Silverback API Components Bundle Project
*
* (c) Daniel West <[email protected]>
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Silverback\ApiComponentsBundle\Flysystem;
use League\Flysystem\Filesystem;
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
use Symfony\Component\DependencyInjection\ServiceLocator;
/**
* @author Daniel West <[email protected]>
* @author Vincent Chalamon <[email protected]>
class FilesystemProvider
{
public const FILESYSTEM_ADAPTER_TAG = 'silverback.api_components.filesystem_adapter';
public const FILESYSTEM_TAG = 'silverback.api_components.filesystem_adapter';
private array $filesystems = [];
public function __construct(private readonly ServiceLocator $adapters)
{}
* @throws RuntimeException
public function createFilesystem(string $name, array $config = []): Filesystem
return $this->filesystems[$name] = new Filesystem($this->adapters->get($name), $config);
}
public function getFilesystem(string $name): ?Filesystem
return $this->filesystems[$name] ?? $this->createFilesystem($name);