gpslab/pagination-bundle
Symfony bundle integrating the gpslab/pagination library: registers pagination services, Twig helpers, and configuration so you can paginate Doctrine queries, arrays, and custom data sources with reusable page objects and simple templates.
Architecture fit — poor, and the premise needs correcting. gpslab/pagination-bundle is a Symfony bundle, not a Laravel package. The gpslab vendor publishes Symfony DI-extension bundles (domain events, command bus, pagination), and a bundle implies registration through Kernel::registerBundles(), a DependencyInjection/*Extension class, service YAML/XML config, and typically Twig helpers for rendering controls. Laravel has no bundle concept — no service container tag compiler, no bundle manifest, no Twig by default. Adopting this means dragging Symfony HttpKernel, DependencyInjection, and likely TwigBundle into a Laravel app, or bypassing the bundle entirely and using whatever underlying core library it wraps (if one is published separately — verify this first; it determines whether the package is unusable or merely inconvenient).
What v1.4.2 changes — and what it confirms. The release is a single-commit bugfix: tagging the PaginationParamConverter service. Read that carefully, because it is diagnostic rather than reassuring:
HttpKernel request-mapping concept (Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter), not a Laravel construct. This release hardens a Symfony-request-pipeline dependency that has no Laravel analogue.DependencyInjection compiler-pass machinery Laravel's container does not implement. It is a concrete instance of the integration blocker described above, now confirmed by upstream rather than inferred.The second architectural problem is redundancy. Laravel already ships Illuminate\Pagination — LengthAwarePaginator, CursorPaginator, query-builder and Eloquent integration, and publishable Blade views. There is no capability gap this package fills for a Laravel stack.
Integration feasibility — low. Expect Composer friction before code friction. The release line was dormant from 2020-03-19 (v1.4.1) until this one-commit patch, and a single bugfix carries no dependency-constraint updates with it. Assume PHP ^7.x and Symfony ^3.4|^4.x. Laravel 10/11 requires PHP 8.1+, and Composer 2 will refuse the install or force a --ignore-platform-reqs override that voids any support expectation. Even if resolution succeeds, the Symfony DI wiring will not activate under Laravel's container — and the one thing v1.4.2 fixed is precisely that wiring.
Technical risk — high on maintenance, low on blast radius. The risk profile is unusual and worth stating precisely: pagination is presentation-layer plumbing. It touches no auth, crypto, session, or filesystem paths, so the security exposure is near zero. The real risk is durability — a five-year dormancy followed by a one-commit bugfix means no PHP 8.1/8.2/8.3 compatibility work, no framework-upgrade patches, and no evidence of sustained attention. 11 stars and 0 dependents means no community canary: if it breaks, you are the first to know, and there is no upstream issue thread to consult.
Key questions before any further evaluation:
composer.json PHP and Symfony constraints, and does composer why-not resolve against our target Laravel version?ParamConverter, so it is not model-only.)LIMIT/OFFSET to the query builder or paginate in-memory after fetch?Stack fit: none. Treat the 0.719 composite score as an artifact of permissive licensing and an optimistic opportunity sub-score (0.76), not as evidence of fit. A high opportunity score on a package with zero dependents and a dormant release line is a signal of unclaimed surface area, not viability. The correct read is a category mismatch: right problem domain, wrong framework. A single service-tagging patch does not move this score, and should not be read as a revival signal.
Migration path: do not adopt; if already present, remove. For Laravel, the replacement is native: Model::paginate() / ->simplePaginate() with LengthAwarePaginator, withQueryString() to preserve filters, and Blade's $paginator->links() or a custom view. If the driver was a framework-agnostic paginator requirement (e.g., a shared package serving both Symfony and Laravel), Pagerfanta is the maintained equivalent with standalone and framework adapters — evaluate it as the successor rather than this bundle.
Compatibility: verify PHP 8.2/8.3, Laravel 10/11, Composer 2, and PDO/query-builder assumptions. Assume all four fail until proven otherwise; v1.4.2 modifies none of them. Note also that ParamConverter itself was deprecated in Symfony 6.2 and removed in Symfony 7, so the bundle's Symfony-side upgrade path is a dead end independently of our stack — a second reason not to build on it even if we were a Symfony shop.
Sequencing, if leadership insists on evaluation anyway:
composer require in a throwaway Laravel 11 app; capture resolution errors verbatim. This alone likely ends the discussion.ParamConverter path — bind request params ourselves.Maintenance: effectively unmaintained, with one caveat now on record. v1.4.2 proves the repo is not abandoned-and-archived — someone merged a patch. It does not prove cadence: one bugfix after a multi-year gap, no dependency refresh, no roadmap. MIT license remains the one genuinely favorable attribute — we can fork and patch without legal friction — but forking a pagination library means owning a pagination library, which is not a good use of engineering capacity when the framework ships one.
Support: zero. No vendor, no maintainer SLA, no community forum, and 0 dependents means no peer to ask. Any incident is self-served by whoever integrated it, and that knowledge will not exist in six months. Contrast with the native paginator, where institutional knowledge is ubiquitous among Laravel developers.
Scaling: pagination overhead itself is negligible, but confirm the implementation strategy. If it paginates in memory after a full fetch, it degrades exactly when list endpoints get large — the opposite of the intent. If it emits offset-based SQL, deep-page performance (OFFSET 100000) degrades on large tables regardless of library; Laravel's CursorPaginator addresses this and this bundle almost certainly does not.
Failure modes:
Ramp-up: the domain (page/limit/offset math) is trivially learnable, so initial onboarding cost is low — that is precisely the trap. Switching cost is what matters: framework-coupled rendering code and bundle-specific paginator types leak into Blade templates and controllers, making later replacement a refactor rather than a dependency swap. Low cost to adopt, high cost to unwind.
Recommendation: unchanged — reject for a Laravel stack. v1.4.2 is a patch-level bugfix with no breaking changes, no new capability, and no movement on PHP/framework constraints; it confirms rather than softens the Symfony-DI coupling that disqualifies the package here. Re-evaluate only if we are running Symfony and need a lightweight paginator, and even then prefer Pagerfanta on maintenance grounds.
How can I help you explore Laravel packages today?