philetaylor/hashids-bundle
Symfony bundle integrating Hashids to obfuscate numeric IDs as short, unique, non-sequential strings. Provides services and Twig filters for encoding and decoding IDs with configurable salt, length, and alphabet.
Architecture fit. Low to none for a Laravel codebase. The package is named and structured as a bundle ("hashidsBundle," "Bundle for use hashids lib"), which is Symfony's packaging convention — a Bundle class plus a DependencyInjection extension that registers services into the Symfony container. Laravel does not consume Symfony bundles; it uses Illuminate service providers. There is no evidence in the metadata (1 star, 0 dependents, no Laravel-tagged release history) that this package targets Laravel at all. Treat the "Laravel/PHP package" framing as likely a catalog misclassification and verify before any design work.
Integration feasibility. Very low, and unnecessary. The only functional value here is Hashids encoding/decoding — obfuscating sequential integer IDs into short, non-guessable strings for URLs and public identifiers. That capability is fully provided by the underlying hashids/hashids library, which is framework-agnostic plain PHP, actively maintained, and widely adopted. Adopting this bundle would mean either (a) dragging Symfony DI semantics into Laravel, or (b) writing our own adapter around a wrapper that adds nothing. Both are worse than binding the underlying library directly.
Technical risk. High, concentrated in governance rather than runtime:
Key questions.
type and extra.laravel will answer this in seconds.)hashids/hashids directly? If the answer is "container wiring," that is ~30 lines we can own.Stack fit. Symfony-first, Laravel-incidental at best. The correct integration point for Laravel is the underlying hashids/hashids library, bound as a singleton in an application service provider, with config surfaced through config/hashids.php and injected via constructor. If a Laravel-native wrapper is preferred, use a purpose-built one rather than this bundle.
Migration path. Recommended: do not adopt. Add hashids/hashids directly and own the ~30-line binding. This gives us the identical feature surface with a maintained dependency and no Symfony coupling. If the team has already prototyped against this bundle, the migration out is trivial because the public API is just encode/decode/encodeHex/decodeHex — swap the container binding and delete the bundle.
Compatibility. The 2022 release date is the gating issue. Confirm the composer constraints resolve against our Laravel and Symfony component versions before any proof-of-concept; a hard conflict here ends the evaluation immediately. Also verify PHP 8.2/8.3 support, since a 2022 bundle may predate it.
Sequencing. If leadership wants the option validated rather than dismissed:
composer.json (type, constraints, autoload, license) — 15 minutes, decisive.composer require in a throwaway branch against the real lockfile; capture resolution conflicts.Maintenance. Effectively we would own it. With one maintainer, one star, and zero dependents, upstream fixes for PHP/Symfony drift are unlikely to arrive on our timeline. Any adapter glue we write becomes permanent internal code with no upstream to hand it back to.
Support. GitHub issues only, sparse by construction. No vendor, no SLA, no security disclosure process we can rely on. For a component touching public-facing identifiers, that is a meaningful gap.
Scaling. Runtime scaling is a non-issue — Hashids is cheap string arithmetic, O(1)-ish per call, no external service, no state. The operational scaling risk is entirely organizational: the cost of carrying an unmaintained dependency grows with team turnover and framework upgrades, not with traffic.
Failure modes.
Ramp-up. Near zero on the technical side — Hashids' API is four methods and a salt/min-length config. The learning cost is not engineering time; it is the governance overhead of justifying, tracking, and eventually replacing a near-zero-adoption dependency. That overhead is disproportionate to the value delivered, which is the core of the recommendation: do not adopt; depend on hashids/hashids directly or a maintained Laravel-native wrapper.
How can I help you explore Laravel packages today?