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

Laravel Model Mapper Laravel Package

michael-rubel/laravel-model-mapper

A Laravel package for mapping Eloquent models to custom classes such as DTOs and resources. Define model-to-class mappings, transform attributes and relationships, and keep application layers decoupled with clean, configurable model mapping.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Unchanged, and unchanged for a structural reason: this release adds no functionality. 3.4.3 is a dependency-constraint bump that widens framework compatibility; the package remains a flat collection of global helper functions with no domain, persistence, or transport surface. It is still a code snippet decision priced in hours. A release that adds zero functions does not move the value ceiling — the "N useful call sites" question from Gate 1 is untouched by this changelog.

Integration feasibility. Mechanically still trivial, and the release confirms the mechanism rather than the merit. Two material corrections to the prior assessment:

  • The "Archived (yes)" finding is contradicted. PR #5 was merged and 3.4.3 was tagged, so at the time of this release the repository accepted and shipped external contribution. That was the single most load-bearing risk claim in the previous assessment and it must be withdrawn, not softened. We should also determine why our metadata said archived — wrong repo, stale cache, or a later archival. If the repo has since been archived again, the original conclusion returns in full and the recommendation is unchanged for the original reason.
  • The identity mismatch is narrowed but not resolved. We now have a confirmed data point tying release 3.4.3 and PR #5 to michael-rubel/laravel-loop-functions. The composer.json name is still unverified, so the laravel-model-mapper / laravel-loop-functions discrepancy stands. Resolving it is still Gate 0.

Technical risk. Still high, but the composition of the risk has shifted — that is the actual finding here.

  • Maintenance risk: downgraded from "absent" to "single-volunteer, event-driven." The evidence is one merged PR from one contributor that bumped a framework constraint. That is a merge path, not a maintenance program. It tells us upgrades are possible when a stranger cares enough to send a patch; it says nothing about CVE response, issue triage, or an upgrade landing before it blocks us.
  • The dependency-deadlock failure mode is now realized, not hypothetical. A PR was required to unblock Laravel 10 — meaning users on 3.4.2 had a hard Composer conflict against a framework major. The previous assessment predicted exactly this. We now have proof that it has already happened once, and the remedy depended on volunteer labour with no SLA. Expect the identical scenario at Laravel 11 and 12, with no guarantee anyone shows up.
  • Staleness risk: unresolved, and possibly worse than stated. The changelog carries no date. If 3.4.3 shipped in the Laravel 10 window (early 2023), then the "last release 2023-01-19" observation was a stale read of 3.4.2 — and the release record now shows a multi-year gap since. Either way, the support ceiling is Laravel 10. We must confirm our target runtime before this goes any further.
  • Unchanged and still disqualifying on their own: ~17 stars and zero dependents (no ecosystem validation), global root-namespace functions (pollution, collision, invisible to static analysis), and unverifiable provenance (cannot be allowlisted by security review).

Key questions.

  1. Does the canonical composer.json now declare laravel-loop-functions, and what is the exact require block for php and illuminate/support at tag 3.4.3? Is Laravel 11/12 supported, and if not, is there an open or merged PR?
  2. What is the release date of 3.4.3, and has the repository been archived since? This determines whether we are correcting a stale finding or re-confirming the original conclusion.
  3. Why did our source data report archived? A metadata pipeline that produced a wrong load-bearing fact once will do it again; that is a separate ticket.
  4. Does the merged PR #5 contain tests or CI evidence, or only a constraint edit? We are judging whether a fork would inherit a test suite or a bare helpers.php.
  5. The prior Gate 1 question is the one this release does not answer: name the functions, and count the call sites. Fewer than ~5 and the build-vs-import math fails regardless of who maintains the repo.

TPM recommendation: unchanged — vendor the functions, do not adopt the dependency. The release removes the strongest single argument (abandonment) while leaving every other argument intact, and it supplies new evidence for the recommendation: the constraint conflict we predicted has already occurred once and was resolved by an unpaid contributor. A dependency that requires a stranger's pull request to survive each framework major is not a dependency; it is a deferred fork. Copy the functions we want into app/Support under MIT with attribution and a pinned commit SHA, keep our tests, and own it explicitly. The value ceiling did not move this release.

Integration Approach

Stack fit. Nominally improved: the support ceiling moved from Laravel 9 to Laravel 10. Confirm whether that reaches our runtime; if we are on 11 or 12, this release does not make the package installable and the evaluation stalls at the same place. The conventions test from before still governs: if our lint rules discourage root-namespace helpers, adopting this buys a code-review argument per call site.

Migration path. The two-way path remains short and the recommendation is unchanged:

  1. composer require tag 3.4.3 in a throwaway sandbox, dump the autoloaded functions, diff against app/Support.
  2. Copy only functions with real call-site demand into a namespaced static class or our existing helpers file, with an attribution header and the pinned source commit SHA plus the PR #5 reference.
  3. Delete the dependency and ship first-party under our own tests.
  4. Re-run only if the audit shows the package is materially larger or better-tested than the metadata suggests — and note that this release gives no evidence of either.

Compatibility. Better than previously stated and still unverified. The constraint conflict that blocked Laravel 10 is resolved as of 3.4.3; it was not resolved for 3.4.2. So: pin 3.4.3 or later, never ^3.4.0, and never --ignore-platform-reqs. Run with E_ALL to surface deprecations, and check function_exists guards against our existing helper packages. "Installs cleanly" remains necessary and insufficient — the next framework major is the same coin-flip, and this time we have seen the coin.

Sequencing.

  • Gate 0 (hours, unchanged priority): Resolve the composer.json name, confirm the 3.4.3 release date, and confirm archived status today. Do not proceed on the old "archived" premise — it is now known to be at least partly wrong.
  • Gate 1 (1–2 days): Source audit at tag 3.4.3 + call-site inventory. Output: N functions we actually want, and whether the repo carries tests.
  • Gate 2 (decision): Small N → vendor and close. Large N with real test coverage → fork, name an owner, treat as first-party. Requiring the artifact as-is should still be rejected: single-maintainer, zero dependents, global namespace, unverifiable provenance.
  • Gate 3: Only if Gates 0–2 clear, install pinned-exact with a committed lock file and a 90-day re-review ticket.

Still a 1–3 day investigation. Do not parallelise with a feature deadline, and do not reopen it on the strength of a patch release.

Operational Impact

Maintenance. The prior claim — "permanent and ours either way" — needs one amendment: it is now contingent, not certain. There is a live maintainer-adjacent channel, evidenced by a merged PR. But a channel that responds when a volunteer shows up is not an SLA. Plan for ownership to be ours, and treat any upstream patch as a bonus. The asymmetry still favours vendoring: it makes the obligation visible in code review rather than hiding it behind a composer.json line nobody re-reads until a framework major forces the issue.

Support. Effectively none, with one demonstrated exception. No advisories, no triage, no upgrade guidance, no published response commitment. The 3.4.3 precedent shows a fix can arrive; it does not show it will arrive before our upgrade window closes. The on-call runbook must still assume first-touch diagnosis by whoever read the source at Gate 1.

Scaling. No runtime dimension — in-process helpers. The organisational concern is unchanged and slightly sharpened: a package that is easy to call everywhere becomes load-bearing by accident, and its ease of adoption is now marginally higher (it installs on L10). Cap adoption deliberately and prefer greppable, namespaced wrappers.

Failure modes.

  • Composer resolution deadlock at the next framework major. Highest-probability failure, and now observed, not predicted: it already happened at Laravel 10 and needed PR #5. It blocks the entire dependency graph, not one feature.
  • Silent PHP-version breakage. Deprecations become exceptions on a PHP minor; the fix lands on us. Unchanged.
  • Global function collision. Fatal cannot redeclare at boot, only in the environment where both packages load. Unchanged.
  • Provenance ambiguity. Still the most likely thing to stop a release at security review, and this release only partially addresses it — we have the repo and PR, not the canonical package name.
  • Orphaning through attrition. Unchanged; the maintenance dependency rests on one contributor's continued attention, which is not a commitment we can point to in a risk register.
  • New: false-comfort risk. A recent-looking tag plus a "Laravel 10 support" line invites a reviewer to mark the package "maintained" and close the ticket. Our own metadata already got this wrong once. Correct the record explicitly rather than letting the changelog do our reasoning.

Ramp-up. Unchanged in both directions: trivial to use, expensive to safely retire, no docs, no changelog beyond an auto-generated compare link, and intent recoverable only by reading the body. This asymmetry remains the cleanest argument for holding the code ourselves — in a vendored file the body sits in our repo with a comment explaining why it exists, which is exactly what a new engineer needs.

Bottom line for planning. Budget 1–3 engineer-days. First half-day is Gate 0: correct the archived finding, confirm the release date and current composer.json, and confirm the runtime ceiling. Expect the outcome to be unchanged — vendor a handful of functions under MIT with attribution and close. The 3.4.3 release is a reason to re-verify our facts, not a reason to adopt.

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast