php-http/discovery
Auto-discovery for HTTP clients and factories: finds PSR-18 clients and PSR-17/PSR-7 implementations at runtime, so libraries can depend on interfaces without forcing a specific vendor. Includes a Composer plugin for optional auto-installation.
Architecture fit: Excellent for PSR-17/PSR-18 compliant stacks. Decouples library code from concrete HTTP client implementations, promoting vendor neutrality. Ideal for SDKs/libraries needing flexibility but requires PSR standards adoption in the project.
Integration feasibility: Low friction via Composer; minimal code changes needed (replace direct client instantiations with Psr18Client/Psr17Factory). Composer plugin auto-installs missing implementations but requires explicit opt-in (allow-plugins).
Technical risk: Composer plugin may auto-install dependencies unexpectedly, causing version conflicts. Discovery failures (e.g., multiple clients present without explicit configuration) lead to runtime exceptions. Past version issues (e.g., 1.5.1) suggest careful version pinning is needed.
Key questions: How to enforce preferred implementations in multi-client environments? What happens when no PSR-18 client is installed (e.g., in CLI tools)? How does it interact with legacy non-PSR code? How to handle Magento-specific classloader quirks safely?
Stack fit: Perfect for modern PHP stacks using PSR-17/18 (Symfony, Laravel, Laminas, etc.). Compatible with Guzzle, Symfony HttpClient, Nyholm PSR-
How can I help you explore Laravel packages today?