php-http/laravel-httplug
Laravel integration for HTTPlug that wires PSR-7/PSR-18 HTTP clients into the service container, provides package configuration and convenient Laravel access, and lets apps use interchangeable HTTPlug adapters for outbound HTTP requests.
Build vs. buy on HTTP plumbing — and here the answer flips to "build." This package's entire surface area is a Laravel service provider plus a config file that binds an HTTPlug client, message factory, and plugin chain into the container. A staff engineer can reproduce it in roughly 30–60 lines. That is a strong signal that adopting a third-party bridge for a container binding adds dependency risk with no defensible product value.
Standardization decision: HTTPlug vs. PSR-18. HTTPlug was the pre-standard HTTP client abstraction; PSR-18 (psr/http-client) superseded it. Adopting this package would anchor new work to an abstraction the ecosystem has moved past. This is directly relevant to a roadmap item like "consolidate our outbound HTTP layer," and it argues for standardizing on PSR-18 + Symfony HttpClient or Guzzle 7 instead.
Third-party HTTP middleware strategy. The one genuine capability the HTTPlug ecosystem offers is a plugin chain — retries, logging, circuit breaking, auth headers — composed declaratively. If that's a product requirement (e.g., resilient webhook delivery, rate-limit-aware third-party integrations), the decision is whether to buy that capability via a plugin ecosystem or implement it. Modern answer: PSR-18 decorators or Laravel's own Http client middleware, not this package.
Legacy modernization sequencing. If this package appears in a dependency audit, it dates the codebase to Laravel 5.x / PHP 7.x. That's a concrete input to a platform-upgrade roadmap, not a feature decision — it tells you where the migration budget goes.
Evaluating "small utility" dependencies generally. 12 stars, last release August 2016, a composite score near 1.5 — this is a useful calibration case for a dependency policy: single-maintainer, unmaintained, sub-100-star packages get a default-reject unless they're trivially forkable or purely internal.
Consider it only under a narrow, and likely shrinking, set of conditions:
php-http/httplug transitively through another library, and you need container-resolved client injection for a short window before migration.php-http/client-common retry or logger plugin you cannot yet replace — and you want to avoid writing the service provider yourself.Look elsewhere — decisively — if any of the following hold:
illuminate/support constraint and on modern Guzzle.Http facade. Both are supported, documented, and maintained.If you must keep it temporarily, treat it as technical debt with a named owner and a removal date, and pin the lockfile.
For executives: This is a low-value, unmaintained utility that binds an HTTP client into Laravel's dependency injection container — functionality our engineers can write and own in under a day. Its last release was in 2016, it has minimal community adoption, and it depends on an HTTP abstraction (HTTPlug) that the PHP ecosystem has since replaced with the PSR-18 standard. Recommendation: do not adopt for new work; if it exists in our stack, schedule removal as part of the platform upgrade rather than budgeting for it as a strategic component. The cost of replacing it is measured in hours, not sprints.
For engineering: The package is a service provider and a config file. It buys us container-resolved HTTPlug clients with a plugin chain, and it buys us a 2016-era constraint on illuminate/support and Guzzle. We can reproduce the useful 10% with a PSR-18 binding plus our own middleware, keep first-party ownership, and get PHP 8 and current Laravel support for free. Where we genuinely need retry/logging/circuit-breaking behavior, implement it as PSR-18 decorators or Laravel HTTP client middleware so it is testable and observable with our current tooling.
Positioning and risk, stated plainly: This is not a strategic dependency and should not be presented as one. It is a convenience wrapper that has been abandoned; the risk is inherited CVE exposure and blocked framework upgrades, and the upside is a few dozen lines of code we would rather own. Frame the recommendation as consolidation and risk reduction, with a concrete migration ticket and an owner, rather than as a build-versus-buy debate.
How can I help you explore Laravel packages today?