Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Data Mapper Bundle Laravel Package

thruster/data-mapper-bundle

A Symfony bundle that wires Thruster's data mapper into your application, adding service configuration and dependency injection for clean object-to-object and array transformations. Centralize mapping logic, reduce boilerplate, and keep data conversion reusable across Symfony projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Despite the "Laravel/PHP package" framing, the artifact is named and structured as a Symfony bundle (thruster/data-mapper-bundle), not a Laravel package. Symfony bundles rely on Bundle subclasses, DependencyInjection extension classes, and compiler passes registered in a Symfony kernel — none of which Laravel's service container or package discovery understands. Adopting it in a Laravel codebase therefore means either (a) running a hybrid Symfony-kernel bootstrap alongside Laravel's container, or (b) manually re-wiring the bundle's services, configuration tree, and tagging into a hand-written Laravel ServiceProvider. Both are non-trivial and neither is the "install and go" experience the package name implies. The core value proposition — a data mapper between domain objects and persistence/transport representations — is architecturally reasonable for a Laravel app (DTOs, API resources, hydrators), but this specific packaging fights the framework rather than fitting it.

Integration feasibility. Low. The last release is dated 2016-02-29, which places it firmly in the Symfony 2.x / PHP 5.5–7.0 era. A Laravel application on a current LTS (Laravel 10/11/12, PHP 8.2–8.4) will almost certainly fail Composer resolution: the package's composer.json will constrain symfony/* to ~2.x components and php to >=5.5, both of which conflict with the framework's own transitive requirements. Even with --ignore-platform-reqs and a manual override, the runtime code will hit PHP 8 hard errors — removed functions (each(), create_function()), removed curly-brace string offsets, mcrypt reliance, and implicit-nullable parameter deprecations are all plausible in 2016-era code. There is no illuminate/support dependency, no Laravel auto-discovery entry, and no published migration guide.

Technical risk. Critical, and almost entirely unmitigated.

  • Abandonment: Nine-plus years without a release or (presumably) a commit. No security response capability upstream.
  • Validation: 0 stars, 0 dependents. There is no evidence of production usage anywhere in the ecosystem. No Stack Overflow answers, no third-party blog posts, no fork activity to inherit bug fixes from.
  • Supply chain: An unmaintained transitive dependency is a standing CVE exposure with no patch path other than our own fork. composer audit will not help us — there will simply be no advisory issued for an abandoned package.
  • Bus factor: Effectively one historical author, now unreachable for practical purposes.
  • Naming ambiguity: The "Bundle" suffix suggests the original intent was Symfony-first; any Laravel usage was likely never a supported path.

Key questions.

  1. What problem is this actually solving? Is there a concrete requirement (DTO hydration, API serialization, domain-to-persistence mapping) that existing, maintained libraries cannot meet? Spatie's laravel-data, Symfony's Serializer, spatie/laravel-model-states, or 50 lines of hand-rolled reflection-based hydration usually cover the same ground.
  2. Is this a direct dependency or a transitive one? If it arrives via another package, the correct action is to replace the parent, not to patch the leaf.
  3. Is there an internal fork or historical usage we must remain compatible with? A 2016 package with 0 dependents is unlikely to be load-bearing, but confirm.
  4. Who is proposing it, and on what basis? Adoption proposals for abandoned packages typically stem from a single developer's prior familiarity, not from evaluated fit.
  5. What is the exit cost if we adopt and later abandon? For a data mapper, this is usually high — it embeds itself in every model boundary.

Recommendation: Do not adopt. Treat the repository as a reference design at most — read the mapping strategy, then implement it against a maintained library or in-house with tests. If a hard constraint forces adoption, budget for a full vendored fork, PHP 8 compatibility work, and permanent internal ownership.

Integration Approach

Stack fit. Poor by construction. Laravel's idioms — service providers, facades, container bindings, config/*.php files, Eloquent — are not what a Symfony bundle exposes. The bundle's Configuration tree (YAML/XML semantics) and compiler passes have no Laravel analogue; the mapping metadata it expects will not be discovered by Laravel's autoloading or caching layers without custom glue.

Migration path (if pursued, which I advise against). There is no supported path; there is only a rebuild:

  1. Fork and vendor. Copy the source into packages/ or a private VCS repository, rewrite composer.json to php: ^8.2, modern symfony/* constraints (or remove them entirely if only used for interfaces), and add PSR-4 autoloading plus Laravel package discovery.
  2. Port the bootstrap. Translate the Symfony Extension/CompilerPass wiring into a single Laravel ServiceProvider with explicit bind/singleton calls and a config/data-mapper.php publishable config. Discard the bundle class.
  3. PHP 8 remediation. Run static analysis (PHPStan at a high level, Rector with the PHP 8 sets) to surface removed APIs, then unit-test every mapper path — this code has no test signal from the community.
  4. Boundary isolation. Wrap the library behind our own interfaces (Mapper, Hydrator) so call sites depend on our abstraction, not on ThrusterIO\*. This is the single most important step: it converts an unmaintainable dependency into a replaceable one.

Compatibility. Assume no compatibility with current Laravel or PHP until proven otherwise in a spike. The spike should be timeboxed (1–2 days) and treated as a go/no-go gate, not as the start of implementation.

Sequencing. If the decision survives the spike: (1) fork and modernize in isolation with its own CI; (2) publish internally; (3) introduce behind an anti-corruption layer in a single bounded context; (4) expand only after a release cycle of stable operation. Do not thread it through the domain model in the first pass — a data mapper touches the most sensitive seams of the application.

Preferred alternative. Run a two-week evaluation of spatie/laravel-data (active, Laravel-native, typed DTOs with validation and transformation) or Symfony's Serializer used standalone within Laravel. Both are maintained, documented, and have real dependent counts. The cost of evaluating them is lower than the cost of owning the 2016 bundle.

Operational Impact

Maintenance. We become the maintainers on day one. There is no upstream to file issues against, no release cadence to track, and no one else to inherit fixes. Every PHP minor version, every Laravel major version, and every dependency bump becomes our problem — and because the library sits at the domain/persistence boundary, breakage surfaces as application-level failures rather than clean dependency errors.

Support. No vendor, no community, no documentation beyond whatever exists in a nine-year-old README. Internal support means one or two engineers who have read the source; that is a bus factor of one or two for a component touching data integrity.

Scaling. The 2016 mapper will use reflection and runtime metadata resolution patterns typical of that era, with no opcache-friendly metadata caching, no preloading support, and no JIT-aware hot paths. On high-throughput endpoints this is a plausible latency and memory regression versus modern alternatives that compile or cache mapping metadata. Benchmarks would be mandatory before any production exposure.

Failure modes.

  • Silent data corruption: a mapper that mis-hydrates a nullable or union-typed field fails quietly; on a 2016 codebase there is no type-system protection and no upstream fix.
  • Fatal errors on runtime upgrade: PHP 8.4 or Laravel 13 lands, an internal call is removed, and the failure appears in production at the mapping layer.
  • Security exposure without a patch path: if a deserialization or reflection-based vulnerability is found, no advisory will be issued and no fix will arrive.
  • Ecosystem drift: Composer conflict resolution blocks unrelated upgrades, forcing either --ignore-platform-reqs (dangerous) or replace hacks in composer.json that confuse future dependency tooling.
  • Knowledge loss: the original author's intent is undocumented; reverse-engineering behavior at 2 a.m. during an incident is a realistic scenario.

Ramp-up. Superficially fast — the API surface is small and a competent PHP engineer can read the source in a day. But true ramp-up requires the engineer to also learn Symfony bundle conventions (if the wiring is ported rather than rewritten), to build the test suite the package lacks, and to understand undocumented mapping semantics. Realistic estimate: 2–3 engineer-weeks to a production-grade, internally owned, tested fork — versus roughly 3–5 engineer-days to adopt a maintained alternative. The TCO comparison is not close.

Bottom line for the portfolio. Zero stars and zero dependents is not a neutral signal; for an unmaintained 2016 package it is a disqualifying one. Reject the dependency, capture the design idea, and spend the saved engineering time on a maintained library or a small in-house implementation we control.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels