hprotravel/symfony-dto-bundle
A Symfony bundle from HproTravel for working with data transfer objects (DTOs), helping structure request and response data, improve type safety, and keep application layers clean. It integrates DTO handling into Symfony projects.
symfony-dto-bundle, auto-wired via Symfony's bundle/kernel config). It informs the first decision: whether the target codebase is Symfony at all. In a Laravel app this is a non-starter without an adapter layer, and even then you would be paying integration tax for a pattern Laravel already solves natively.Consider it when:
Look elsewhere when:
spatie/laravel-data — it is the de facto standard for typed DTOs, validation, and transformation, with active maintenance, docs, and a large install base. Any Symfony bundle here is the wrong shape.cuyz/valinor (strong typed mapping and error reporting), symfony/serializer with normalizers, or jms/serializer for mature, widely-deployed serialization.Practical guidance: treat this as a design reference, not a dependency. If the pattern fits, spend one spike to port the convention (or adopt spatie/laravel-data / cuyz/valinor) and own the code.
To executives: This is a small, single-purpose library that enforces a disciplined pattern — explicit, typed data contracts at the edges of the application instead of passing raw arrays around. The pattern is valuable: it reduces integration bugs, makes API changes safer, and improves auditability. The package itself, however, has no external validation: zero stars, zero downstream users, a single corporate maintainer, and it is hosted privately on Bitbucket. Adopting it as a dependency would trade a small amount of upfront effort for a meaningful long-term maintenance and supply-chain risk.
Recommendation: do not add it to the dependency tree. Extract the pattern instead — a short spike to codify an internal DTO convention, or adopt a mature ecosystem library (spatie/laravel-data on Laravel, cuyz/valinor or symfony/serializer on Symfony). This captures the architectural benefit while keeping ownership, security review, and upgrade paths under our control.
To engineering: the idea is sound and the scope is appropriately narrow, but the artifact does not meet our bar for a third-party dependency — no community, no dependents, no release or security process, and a framework mismatch if we are targeting Laravel. If the team likes the API surface, fork it, strip it to what we need, and own it internally with tests and docs; otherwise use the established library for the stack. Either way, record the decision and the rationale in an ADR so we do not relitigate it in six months.
Cost framing: adoption cost is low (small, simple package); abandonment cost is high (touches every controller and job once the pattern spreads). That asymmetry is the whole argument for borrowing the pattern rather than buying the package.
How can I help you explore Laravel packages today?