Comments (3)
i use the following code in my Service builder class at the moment. I can make a pull request for that when i would be accepted?
private $plugins = array();
/**
* {@inheritdoc}
*/
public function get($name, $throwAway = false)
{
if (!isset($this->builderConfig[$name])) {
throw new ClientNotFoundException('No client is registered as ' . $name);
}
if (!$throwAway && isset($this->clients[$name])) {
return $this->clients[$name];
}
$client = parent::get($name, $throwAway);
foreach ($this->getPlugins() as $plugin) {
$client->getEventDispatcher()->addSubscriber($plugin);
}
return $client;
}
public function addPlugin($plugin)
{
$this->plugins[] = $plugin;
}
public function getPlugins()
{
return $this->plugins;
}
from guzzle.
What do you think about making the ServiceBuilder own an EventDispatcher, and make it so that the ServiceBuilder emits an event each time a client is created? Then you could add a listener for this event that decorates the created clients in whatever way you see fit (adds plugins, sets configs, etc).
<?php
$builder->getEventDispatcher()->addListener('service_builder.create_client', function(Event $event) use ($plugins) {
// Add plugins to the client
foreach ($plugins as $plugin) {
$event['client']->getEventDispatcher()->addSubscriber($plugin);
}
// Do more stuff other than add plugins
$event['client']->getConfig()->set('foo', 'bar');
});
I think something like the above would be a bit more flexible, but it does add a bit of code to the caller. What do you think?
from guzzle.
nice this is the better way
from guzzle.
Related Issues (20)
- The no proxy request option does not avoid falling back to proxies set in ENV vars HOT 2
- Maximum execution time of 30 seconds exceeded HOT 2
- upgradin to PHP 8 and Guzzle 7. Breaks app HOT 1
- Remove content-type header when a redirect to GET: cURL does and Guzzle doesn't HOT 3
- Host Header HOT 5
- PHP Fatal Error when retrieving certain pages. HOT 4
- Pool promise wait() breaks with guzzlehttp/promises v2 HOT 9
- Intermittent 501 Not Implemented Error Due to Unexpected 'offsetGet' Method in Guzzle Requests HOT 4
- Using `"stream" => true` in options makes PSR7 responses read-once HOT 3
- [DOCS] In online documentation, the request option connect_timeout still says that the default value of 0 waits indefinitely, which was never true HOT 4
- No exception gets thrown on responses with status code >= 400 HOT 1
- http://www.guzzlephp.org displays Indonesian gambling site advert HOT 2
- Organization Information HOT 1
- Can GuzzleHttp be used to listen to a specific event to obtain request body data? HOT 3
- Unable to parse URI in Ipv6 HOT 14
- Document `GuzzleHttp\Client::__construct()` parameters at type level? HOT 3
- endless yield problem HOT 1
- Proxy chain support HOT 1
- Security vulnerabilities in guzzlehttp/psr7 dependency in v6.x HOT 3
- Mistake
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from guzzle.