Abstract request handler logic to Http class #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
The purpose of this PR is to enhance the
fetch.php
library by adding a newHttp
class that improves the handling of HTTP requests, particularly by addressing the Guzzle client instantiation issue. Previously, the Guzzle client was being instantiated on every request, leading to performance inefficiencies. This PR implements a singleton pattern for the Guzzle client to ensure it is instantiated only once and reused across requests.Approach
This change addresses the problem by introducing the following:
Http
Class:fetch
) and asynchronous (fetchAsync
/fetch_async
) HTTP requests.getClient()
method that checks if the client has already been created, preventing unnecessary re-instantiation on each request.options
array, allowing for further customization when needed, without altering the singleton instance.Open Questions and Pre-Merge TODOs
options
array and that they work without overriding the global singleton client.Learning
The research stage included reviewing Guzzle’s documentation to understand its client instantiation process and best practices for optimizing HTTP requests in PHP. Additionally, the solution is inspired by common patterns used to implement singletons in PHP while ensuring flexibility for users who need custom Guzzle clients.