Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Gaufrette Extras Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Storage abstraction strategy (build vs. buy vs. adopt). The package is a worked example of the decorator approach to file handling: wrap a filesystem interface, forward the standard operations (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.
  • Public URL / CDN resolution as a first-class product requirement. The concrete capability worth harvesting is 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.
  • Scope sizing for "extras." The package's entire surface is a handful of decorators plus a resolver. That evidence tilts build-vs-buy toward build: this is days of work on a maintained abstraction, not a platform commitment, and it removes a dependency rather than adding one.
  • Tech-debt and upgrade backlog. If any legacy service still references Gaufrette Extras, this is a concrete modernization ticket (inventory adapters → map each to a Flysystem adapter → configure as disks → delete the bridge), not a roadmap item.
  • Explicitly not a roadmap driver. With a [DEPRECATED] marker, 3 stars, 0 dependents, and a Symfony2 target, no roadmap commitment should depend on its release cadence, maintenance, or community support.
  • Supply-chain / dependency-audit policy. A useful forcing function: adopt a gate on deprecation status, last release, dependent count, and framework generation so packages like this cannot enter new services by default.

When to Consider This Package

Adoption criteria — in practice, none for new Laravel work.

  • Marginally relevant only if you maintain a Symfony 2.x application on legacy PHP that already depends on the 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.
  • Actively wrong for Laravel. Laravel's contract is 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.
  • Look elsewhere if you are on Symfony 3.4+ (much less 5/6/7), need PHP 8.1+, PSR-4/attribute configuration, or security patches. The framework generation this targets reached end of life in 2018; Composer will almost certainly refuse to resolve symfony/* ^2.x against Laravel 10/11/12.
  • Look elsewhere for the capability itself: Flysystem (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.
  • Disqualifying signals: explicit deprecation, no dependents to absorb breakage, no visible maintainer, an EOL framework floor, and EOL transitive dependencies that composer audit/Dependabot will flag — blocking CI with no upstream to patch.

How to Pitch It (Stakeholders)

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk