kphoen/gaufrette-extras-bundle
A Symfony bundle that adds extra functionality and integrations on top of Gaufrette, the PHP filesystem abstraction library. It wires additional filesystem adapters, services, and configuration into Symfony apps, complementing KnpGaufretteBundle for flexible, framework-native file storage handling.
read, write, exists, delete), and layer cross-cutting behavior on top — public/CDN URL resolution, read caching, path prefixing — without touching call sites. That pattern, not the package, is the reusable asset. The decision it informs is whether to standardize on one storage abstraction (Flysystem, via Laravel's native Storage facade and config/filesystems.php disks) and implement "extras" as thin in-house decorators, versus scattering vendor SDK calls through controllers.ResolvableFilesystem: a single object that both performs filesystem operations and turns a storage key into a publicly usable URL, so API responses never leak bucket internals or hard-code a CDN hostname. Product-wise this determines whether image/media URLs are an application concern or a storage-layer concern — decide once, expose it as a service, stop re-deciding per endpoint.[DEPRECATED] marker, 3 stars, 0 dependents, and a Symfony2 target, no roadmap commitment should depend on its release cadence, maintenance, or community support.Adoption criteria — in practice, none for new Laravel work.
kphoen/gaufrette-extras library and you want the DI wiring. Even then, prefer wiring the library yourself — the bundle saves a handful of lines of service configuration and nothing else.Illuminate\Contracts\Filesystem\Filesystem over Flysystem; Gaufrette is a competing abstraction. There is no service provider, no facade, no published config. Consuming it means bootstrapping Symfony's DI container inside Laravel — architecturally backwards, and hostile to Octane's long-lived workers.symfony/* ^2.x against Laravel 10/11/12.league/flysystem + flysystem-bundle) as the abstraction, Storage::disk()->url() for public URLs, a maintained image library (Intervention Image, Glide, LiipImagineBundle) or an image CDN for resizing/CDN/caching, and a ~1-day custom Flysystem adapter if a specific backend is genuinely uncovered.composer audit/Dependabot will flag — blocking CI with no upstream to patch.For executives: "We evaluated a legacy Symfony2 bundle that adds storage conveniences — resolving stored files to public/CDN URLs and caching reads. It is formally deprecated by its author, has zero downstream users, targets a framework that has been end-of-life since 2018, and would drag unsupported components into our dependency tree. We are not adopting it. The capability it demonstrates is worth a few days of our own work on the storage layer we already maintain, so the recommended outcome is a direction decision, not a budget ask." Recommendation: do not adopt; no budget required; one small cleanup ticket if legacy references exist.
For engineering: take the pattern, not the package. Standardize on Flysystem behind Laravel's native Storage / config/filesystems.php disks; implement URL resolution and caching as service-layer decorators (ResolvableFilesystem-style) bound as singletons and type-hinted at call sites; if a required backend is missing, scope a ~1-day custom Flysystem adapter rather than a Gaufrette bridge. Close the request with the disk configuration as the documented answer unless a specific uncovered adapter is named — then escalate that adapter, not the bundle. Add a dependency-audit gate (deprecation status, last release, dependent count, framework compatibility) so packages in this class are triaged before they are scoped.
Ask: approval of the direction (Flysystem + in-house decorators; Gaufrette Extras as reference only), plus a low-effort, low-risk cleanup ticket if any legacy references exist. Expected value of a spike on the package itself is negative — redirect that time to Flysystem adapter research.
How can I help you explore Laravel packages today?