glebkaf/query-filter-bundle
A Symfony bundle for adding reusable, declarative query filters to Doctrine. Define filter criteria once and apply them across requests, replacing hand-written conditional query logic with a consistent, configurable filtering layer that keeps controllers and repositories clean.
Architecture fit. The release is for artprima/query-filter-bundle, which — despite being framed here as a Laravel/PHP package — is a Symfony bundle. It binds to Symfony's HTTP kernel, DI container, event dispatcher, and (historically) annotation/config loading. It has no service provider, facade, or middleware contract that Laravel would recognize. For a Laravel codebase the architectural fit is effectively nil without an adapter layer; for a Symfony codebase the fit is plausible but only if the surrounding app matches the bundle's (undocumented here) version constraints.
What this release actually changes. The note translates to: "This is the version without the dependency on sensio/extra-bundle." That is the entirety of the disclosed change surface. Concretely this means the hard requirement on SensioFrameworkExtraBundle — abandoned upstream since 2023 and superseded by native Symfony attributes — has been dropped. Two very different implementation realities are consistent with that sentence, and the release note does not distinguish them:
suggest/conflict), leaving code that still calls Sensio annotation readers → runtime breakage, not a fix.Integration feasibility. Low as delivered. The release is not distributed via Packagist; consumption requires a hand-edited repositories entry pointing at a personal VCS fork (github.com/glebkaf/query-filter-bundle) and pinning the branch alias fix-deps. There is no tagged version, no semantic versioning, and no checksum-stable artifact. Composer will resolve the branch head, meaning two installs on different days can produce different code — unacceptable for any regulated or reproducible build.
Technical risk.
@Route loading, or security annotations changes runtime behavior in ways static analysis will not catch.artprima/query-filter-bundle upstream; future upstream fixes must be manually cherry-picked or the fork becomes the de facto product.fix-deps is not a constraint an auditor, SCA tool, or SBOM can reason about.Key questions.
sensio/extra-bundle removed or merely relaxed? Provide the composer.json diff and confirm no remaining Sensio\Bundle\FrameworkExtraBundle\* imports.fix-deps the only ref? Can we get a commit SHA pin plus a composer.lock diff?Stack fit. Determine the host framework first — this gates everything downstream. In a Symfony app the bundle is a natural fit and the Sensio removal is directionally correct, since SensioFrameworkExtraBundle is abandoned and blocks Symfony 6.4/7.x adoption. In a Laravel app there is no integration path short of reimplementing the filter/query-builder logic as a native Laravel package (service provider + query scope + middleware); do not attempt to load a Symfony bundle via a compatibility shim.
Migration path (Symfony host).
composer.lock, run the full test suite, record baseline query-filter behavior on a representative endpoint set.fix-deps reference in a throwaway branch, and pin to a commit SHA rather than the branch name before it reaches any shared environment.#[Route], #[IsGranted], param converters) — this is our work, not the package's, and it is the most likely source of "it's the bundle's fault" incidents.Compatibility. Confirm the Symfony minor/major constraint, PHP constraint, and that no other dependency still requires SensioFrameworkExtraBundle (a common trap: removing one requirement while a sibling bundle still pulls it in, leaving Composer conflict errors or a mixed annotation/attribute regime). If the removal was a conflict relaxation rather than a code deletion, treat the release as unverified and block it.
Sequencing. (1) Framework clarification → (2) source review of the fork → (3) SHA pin + lockfile → (4) local/staging validation with baseline diff → (5) internal fork or vendor mirror → (6) production. Do not parallelize steps 1–2 with 3–6; if the target is Laravel, stop at step 1.
Maintenance. Ownership is the dominant cost. A personal fork with a single non-semver branch means our team is the maintainer of record in practice. Budget for: tracking upstream commits, re-applying the dependency fix on rebase, periodic Symfony upgrade compatibility work, and an internal decision on when to upstream the patch (the correct long-term outcome — removing an abandoned dependency is a generally useful fix that belongs upstream, not in a private fork).
Support. No vendor, no SLA, no release cadence, no deprecation policy. Incident response depends on an individual contributor's availability. If the fork goes stale or the repository is deleted, builds break — mitigate by mirroring the pinned SHA into an internal Git host or a private Composer repository (Satis/Private Packagist).
Scaling. Query-filter bundles are read-path components; they scale with the API surface, not with traffic directly, but filter construction that produces unbounded or unindexed query predicates can degrade database performance as data volume grows. Verify that filters compile to indexed predicates and that user-supplied filter parameters are validated against an allowlist — a filter bundle is an injection-adjacent surface and the release note says nothing about input handling.
Failure modes.
composer why sensio/framework-extra-bundle before adopting.Ramp-up. Low for a Symfony team already familiar with bundles; not applicable to a Laravel team, where the realistic ramp is "rewrite the filtering logic natively." Regardless of framework, expect roughly half a day to a day to read the fork's diff and the Sensio removal properly, plus test-writing time — the release note is one sentence and is not an adequate basis for a production dependency change.
Recommendation. Conditional hold. The intent of the release (dropping an abandoned dependency) is correct and modestly valuable, but the delivery mechanism — an untagged branch of a personal fork — is not production-grade. Proceed only with a pinned SHA, an internal mirror, a completed Sensio-attribute migration on our side, and a named internal owner; otherwise vendor the filter logic directly. If the target application is Laravel, close the evaluation: this package is out of scope.
How can I help you explore Laravel packages today?