maduser / argon-filesystem
Flysystem storage disk integration for the Argon runtime stack.
v1.0.0
2026-05-25 14:56 UTC
Requires
- php: ^8.2
- league/flysystem: ^3.0
- league/flysystem-local: ^3.0
- maduser/argon-container: ^1.0
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^1.1
- phpunit/phpunit: ^11.5
- slevomat/coding-standard: ^8.24
- squizlabs/php_codesniffer: ^4.0
- vimeo/psalm: ^6.13
README
Flysystem storage disk integration for the Argon runtime stack.
Installation
composer require maduser/argon-filesystem
The local adapter is installed with this package. Other adapters remain application-owned:
composer require league/flysystem-aws-s3-v3 composer require league/flysystem-sftp-v3 composer require league/flysystem-ftp
Service Providers
Register FilesystemServiceProvider, then configure disks from an application service provider.
use League\Flysystem\Filesystem; use League\Flysystem\Local\LocalFilesystemAdapter; use Maduser\Argon\Container\AbstractServiceProvider; use Maduser\Argon\Container\ArgonContainer; use Maduser\Argon\Filesystem\FilesystemDiskRegistry; use Maduser\Argon\Filesystem\Provider\FilesystemServiceProvider; final class AppServiceProvider extends AbstractServiceProvider { #[\Override] public function register(ArgonContainer $container): void { $container->register(FilesystemServiceProvider::class); $container->register(StorageServiceProvider::class); } } final class StorageServiceProvider extends AbstractServiceProvider { #[\Override] public function register(ArgonContainer $container): void { $basePath = $container->getParameters()->get('basePath'); assert(is_string($basePath)); $container->get(FilesystemDiskRegistry::class) ->add('local', new Filesystem(new LocalFilesystemAdapter($basePath . '/storage/app'))) ->setDefault('local'); } }
Usage
Resolve the manager for named disks:
use Maduser\Argon\Filesystem\FilesystemManager; $storage = $container->get(FilesystemManager::class); $storage->disk('local')->write('notes/hello.txt', 'Argon');
Resolve League\Flysystem\FilesystemOperator when a service only needs the default disk:
use League\Flysystem\FilesystemOperator; $filesystem = $container->get(FilesystemOperator::class); $contents = $filesystem->read('notes/hello.txt');
Boundaries
- This package wires Flysystem into Argon. It does not define a storage DSL.
- Applications own adapter packages, credentials, paths, buckets, and visibility rules.
- Configuration is explicit service-provider code, not automatic file discovery.
FilesystemOperatorresolves to the configured default disk. UseFilesystemManagerfor named disks.
Quality Gates
composer check composer test:coverage composer psalm composer phpcs