kambo/httpmessage
kambo/httpmessage is a PHP package for working with HTTP messages in an object-oriented way. It helps you build, inspect, and manipulate requests, responses, headers, and bodies consistently, making HTTP handling cleaner and easier to reuse across applications.
Psr\Http\Message\RequestInterface, or hand a request to an OAuth2 server implementation. This is an enabler decision, not a feature decision; no end user will ever see it.Illuminate\Http\Request into a PSR-7 message before handing it to a PSR-7-only library; unit-testing HTTP message objects without booting the framework; streaming large uploads/responses; abstracting HTTP clients behind PSR-18.Adopt only if all of the following hold — which, realistically, they don't:
Illuminate\Http covers 90% of cases, and Laravel's HTTP client already drags in guzzlehttp/psr7 transitively).Look elsewhere by default. The category is well served:
nyholm/psr7 — lightweight, actively maintained, the de-facto modern choice; pair with symfony/psr-http-message-bridge for Laravel↔PSR-7 conversion.guzzlehttp/psr7 — likely already installed; zero incremental cost in most Laravel apps.laminas/laminas-diactoros — heavier, enterprise-supported.Also note this package ships only the PSR-7 interfaces implementation — it does not include the Symfony bridge or Laravel service provider you'd need to actually wire it into a Laravel app. So even in the best case you're writing integration glue for an abandoned library.
The high opportunity score (7.21) reflects the category (PSR-7 interop is broadly useful), not this vendor. That opportunity is already captured by maintained incumbents.
To executives: We evaluated kambo/httpmessage as a PSR-7 implementation for Laravel. Recommendation: do not adopt. It's functional in principle but effectively abandoned — last release January 2018, zero dependent packages, single maintainer, no security process. The underlying need (interoperating with PSR-7-based libraries) is real but narrow and fully covered by maintained, free alternatives we can adopt in one line of Composer config. Approving this would add maintenance and supply-chain risk for zero product benefit. No action required beyond recording the decision.
To engineering: 5 GitHub stars, 0 dependents, no commits in ~7 years, no declared PHP 8 support. Cost to adopt is low in code and high in risk — we'd own an unmaintained fork the first time a PHP upgrade or security scan flags it, and we'd still have to write the Laravel↔PSR-7 bridge ourselves. If we need PSR-7, standardize on nyholm/psr7 + symfony/psr-http-message-bridge, or just rely on the guzzlehttp/psr7 we already ship. If someone has a specific reason this package wins, bring it to the architecture review with the constraint spelled out; absent that, we close this as "evaluated, declined."
How can I help you explore Laravel packages today?