granedirval/data-dog-pager-bundle
A Symfony bundle that connects your PHP application to Datadog, adding pager-style alerting and monitoring hooks so teams can spot and respond to production issues faster. Simple configuration and service wiring for Symfony apps.
Architecture fit — poor, and mis-scoped for the stated target. Despite being referenced as a "Laravel/PHP package," granedirval/data-dog-pager-bundle is a Symfony2 bundle, not a Laravel package. Its integration surface is the Symfony full-stack kernel: it registers via Bundle classes, depends on the Symfony DI container, symfony/http-kernel event listeners, and Doctrine ORM's EntityManager. Laravel has no equivalent bundle lifecycle — service providers, facades, and the Illuminate\Pagination contracts are a different abstraction. There is no architectural seam where this package drops into a Laravel application. Any use would require treating it as reference source, not as a dependency.
Integration feasibility — effectively zero as a dependency; low-to-moderate as a port. The functional value (configurable filters, sorters, and pagination over Doctrine queries) is real but small in scope — realistically a few hundred lines of query-builder decoration logic. That logic is portable in concept but not in code: it will be built against Doctrine's QueryBuilder and Symfony request objects, so a Laravel port means rewriting against Eloquent's Builder and Request, and re-deriving filter/sorter parsing safely.
Technical risk — high on every axis:
| Risk | Assessment |
|---|---|
| Maintenance signal | 0 stars, 0 dependents, score 0. No adoption, no community validation, no evidence of active maintenance. |
| Framework lifecycle | Symfony2 is end-of-life (2.8 security support ended 2019). A bundle targeting it cannot be assumed to run on PHP 7.4+, and almost certainly not PHP 8.x. |
| Provenance / supply chain | Low-reputation namespace, no dependents, and a name adjacent to "Datadog" — a trademark-adjacent naming pattern. Pulling this into a production dependency graph is an unvetted third-party code decision requiring security review regardless of intent. |
| Compatibility | PSR-0-era autoloading and Symfony2 service definitions will conflict with modern Composer/PSR-4 conventions. |
| Correctness | Filters and sorters exposed via request parameters are the classic injection/DoS surface (unvalidated column names in ORDER BY, unbounded filter combinations). No test suite signal. |
Key questions for the requester:
paginate() + when()/orderBy guards, or spatie/laravel-query-builder) already covers it.babdev/pagerfanta-bundle) or KnpPaginatorBundle — both actively maintained and PSR-4 modern.TPM verdict: Reject as a dependency. Evaluate only as a reading reference for filter/sorter design, and only if the team has already decided to build rather than buy.
Stack fit — none for Laravel; none for supported Symfony. There is no stack in active use at a typical org where this bundle is natively compatible. Laravel: incompatible abstraction. Symfony 6/7: incompatible bundle API and PHP version. Symfony 2: EOL, not an acceptable target for new work.
Migration path — three options, ranked:
Adopt a maintained equivalent (recommended).
spatie/laravel-query-builder for allow-listed filters/sorts. Zero new risk, first-party docs, active maintenance.babdev/pagerfanta-bundle (Pagerfanta) or knplabs/knp-paginator-bundle. Both modern, PSR-4, actively released.doctrine/orm's built-in Doctrine\ORM\Tools\Pagination\Paginator, which this bundle almost certainly wraps anyway.Vendor the concept, not the code. If this package has a specific filter/sorter API your team likes, treat the repository as a design reference. Reimplement against Eloquent/Doctrine with an explicit allow-list schema for sortable columns and filterable fields. Est. effort: 2–5 engineer-days including tests. This is the fallback, not the default.
Fork and modernize. Only justified if there's a hard functional requirement the maintained packages don't meet. Cost: full ownership of a fork, PHP 8 upgrade, PSR-4 conversion, test suite from scratch, ongoing maintenance. Hard to justify for pagination — a solved problem.
Compatibility notes if anyone attempts option 3: expect to rewrite composer.json constraints, convert PSR-0 to PSR-4, replace Symfony2 DI XML/YAML service definitions with modern autowiring, and re-validate every Doctrine API call against ORM 2.14+/3.x (QueryBuilder signatures and hydration behavior have shifted).
Sequencing:
Maintenance — unowned and unmaintainable. Zero stars/dependents means no contributor base, no issue triage, no release cadence. If we depend on it, we are the maintainers from day one, by default, without having chosen to be. That is an unbudgeted permanent cost.
Support — none. No community, no security advisory feed, no upstream to escalate to. Any CVE in its Doctrine/Symfony2 transitive tree is ours to detect and patch. Contrast with maintained alternatives that publish releases and respond to advisories.
Scaling — pagination is app-tier, but the design pattern matters. Offset pagination degrades on large tables (OFFSET 100000 forces a scan); if filter/sorter logic builds unrestricted WHERE/ORDER BY clauses, expect slow queries and index misses on high-cardinality columns. Enforce: max page size, allow-listed sort columns only, composite indexes on frequent filter+sort pairs, and keyset pagination for deep-page or high-volume endpoints.
Failure modes to plan for:
| Failure | Impact | Mitigation |
|---|---|---|
Filter/sort parameter injection (arbitrary column in ORDER BY) |
Query errors, information disclosure, DoS | Allow-list mapping in app code; never pass raw request values |
| Deep offset on large tables | Slow responses, DB CPU spikes | Keyset pagination or capped page depth |
| Unbounded page size | Memory pressure, timeouts | Server-side max per-page clamp |
| Transitive dependency drift (EOL Symfony2/Doctrine components) | Silent breakage on PHP upgrade | Don't take the dependency; if forked, pin and test |
| Abandonware security gap | Unpatched vuln with no upstream fix | Security review at intake; prefer maintained packages |
Ramp-up — steep relative to value. No docs signal, no examples, no tests to read. An engineer onboarding onto a fork spends days reverse-engineering intent for functionality that a maintained package or ~200 lines of native code delivers with documentation. Ramp-up cost exceeds build cost.
Recommendation: Do not integrate. Re-scope the request to the underlying need (paginated, filterable, sortable listings) and satisfy it with the framework-native paginator plus an allow-listed query-builder layer, or Pagerfanta on Symfony. Budget 1–3 engineer-days. Flag the "Datadog"-adjacent naming to whoever sourced this package — it suggests a search artifact rather than a vetted choice, and the package should not enter the dependency graph on the strength of its name.
How can I help you explore Laravel packages today?