Sindbad~EG File Manager
======================
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 <http://symfony.com/doc/current/components/event_dispatcher/introduction.html>`_.
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 ``getEventDispatcher()`` and
add a listener or event subscriber.
Adding event subscribers to clients
-----------------------------------
Any event subscriber or event listener attached to the EventDispatcher of a ``Guzzle\Http\Client`` or
``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.
.. code-block:: php
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();
.. tip::
:doc:`Create event subscribers <creating-plugins>`, or *plugins*, to implement reusable logic that can be
shared across clients. Event subscribers are also easier to test than anonymous functions.
Pre-Built plugins
-----------------
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.
* :doc:`async-plugin`
* :doc:`backoff-plugin`
* :doc:`cache-plugin`
* :doc:`cookie-plugin`
* :doc:`curl-auth-plugin`
* :doc:`history-plugin`
* :doc:`log-plugin`
* :doc:`md5-validator-plugin`
* :doc:`mock-plugin`
* :doc:`oauth-plugin`
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists