ServiceProvider binding).filesystem config patterns, reducing cognitive load for teams familiar with League\Flysystem or AWS SDK.Storage::disk('local')).filesystem drivers (e.g., aws, azure) or custom Flysystem adapters.aws/aws-sdk-php and microsoft/azure-storage-blob may clash with Laravel’s existing SDKs (e.g., fruitcake/laravel-aws). Mitigation: Composer aliases or isolated service containers.EventDispatcher) may need Laravel equivalents (e.g., Illuminate\Events)..env keys (e.g., ANGLE_FILE_STORAGE_*) may conflict with Laravel’s config/filesystems.php.ServiceProvider?Storage::put() wrappers) or only Symfony FileStorage service access?temporary_url() or signed URLs for S3/Azure?Storage::disk() calls be replaced 1:1, or requires refactoring to FileStorage service?filesystem:after-write)?Illuminate\Filesystem\FilesystemManager but requires:
FileStorage as a Laravel Disk implementation.angle_file_storage.yaml with Laravel’s config/filesystems.php.aws driver (preferred) or use the bundle’s aws_s3 as a fallback.azure_blob_storage is a must.local driver; bundle may offer additional features (e.g., path normalization).Storage::disk('local') with bundle’s local backend via a custom Disk class.// app/Providers/FileStorageServiceProvider.php
public function register() {
$this->app->singleton('filesystem', function () {
return new FileStorageBundleDisk(
app('angle.file_storage') // Symfony service
);
});
}
aws driver (avoid bundle duplication).azure_blob_storage via a custom Disk adapter.angle_file_storage.yaml into config/filesystems.php:
'disks' => [
'azure' => [
'driver' => 'angle_azure',
'container' => env('ANGLE_FILE_STORAGE_CONTAINER'),
// ... other config
],
],
replace or provide for overlapping packages (e.g., symfony/event-dispatcher → illuminate/events).Angle\FileStorageBundle\Container).Events facade (e.g., FileUploaded → file.uploaded).queue:work).public).Storage behavior.flysystem adapters.Storage::disk() calls with bundle-agnostic interfaces.filesystems.php..env + config/filesystems.php reduces duplication.Storage behavior.Storage logs apply.storage:link or queue:failed integrations.FileNotFoundException) to Laravel’s StorageException.try {
$file = app('angle.file_storage')->read('file.txt');
} catch (\Exception $e) {
throw new \Illuminate\Contracts\Filesystem\FileNotFoundException($e->getMessage());
}
cache integration (e.g., Storage::cloud()).| Scenario | Risk | Mitigation |
|---|---|---|
| Bundle update breaks config | Config key changes undetected | Schema validation in bootstrap/app.php |
| Cloud provider outage | No fallback for S3/Azure | Hybrid config: type: local as backup |
| Dependency conflicts | AWS/Azure SDK version clashes | Composer conflict or isolated container |
| Laravel upgrade | Symfony version incompatibility | Pin Symfony dependencies strictly |
.env keys mirror Laravel conventions.angle_file_storage vs. filesystems).README.laravel.md in the repo.Storage:: wrappers.How can I help you explore Laravel packages today?