Plugin system overview¶
The workflow of sending a request and parsing a response is driven by Guzzle’s event system, which is powered by the Symfony2 Event Dispatcher component.
Any object in Guzzle that emits events will implement the
Guzzle\Common\HasEventDispatcher interface. You can add
event subscribers directly to these objects using the
addSubscriber() method, or you can grab the
Symfony\Component\EventDispatcher\EventDispatcher object owned by the object using
add a listener or event subscriber.
Adding event subscribers to clients¶
Any event subscriber or event listener attached to the EventDispatcher of a
Guzzle\Service\Client object will automatically be attached to all request objects created by the client. This
allows you to attach, for example, a HistoryPlugin to a client object, and from that point on, every request sent
through that client will utilize the HistoryPlugin.
use Guzzle\Plugin\History\HistoryPlugin; use Guzzle\Service\Client; $client = new Client(); // Create a history plugin and attach it to the client $history = new HistoryPlugin(); $client->addSubscriber($history); // Create and send a request. This request will also utilize the HistoryPlugin $client->get('http://httpbin.org')->send(); // Echo out the last sent request by the client echo $history->getLastRequest();
Create event subscribers, or plugins, to implement reusable logic that can be shared across clients. Event subscribers are also easier to test than anonymous functions.
Guzzle provides easy to use request plugins that add behavior to requests based on signal slot event notifications powered by the Symfony2 Event Dispatcher component.