Skip to content
This repository has been archived by the owner on Jul 15, 2021. It is now read-only.

Latest commit

 

History

History
89 lines (68 loc) · 2.19 KB

clients.md

File metadata and controls

89 lines (68 loc) · 2.19 KB

Creating a service for your client

There are two ways for creating a service for your client:

  • Using the semantic configuration (Beginners)
  • Registering your own service (Advanced users)

Creating a client using semantic configuration

Simply write the following code:

csa_guzzle:
    clients:
        github_api:
            config: # you can specify the options as in http://docs.guzzlephp.org/en/latest/quickstart.html#creating-a-client
                base_uri: https://api.github.com
                timeout: 2.0
                headers:
                    Accept: application/vnd.github.v3+json

The previous code will create a new service, called csa_guzzle.client.github_api, that you can use in your controller, or that you can inject in another service:

<?php

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MyController extends Controller
{
    public function indexAction()
    {
        $client = $this->get('csa_guzzle.client.github_api');
        // ...
    }
}

You may want to mark the service as lazy.

csa_guzzle:
    clients:
        my_client:
            lazy: true
            # ...

If you override your client's class, you can also set the class for your client:

csa_guzzle:
    clients:
        my_client:
            class: AppBundle\Client
            # ...

Of course, you need to make sure that your client class' constructor has exactly the same signature as Guzzle's Client class.

Registering your own service

To have a client supported by the bundle, simply tag it as such:

XML:

<service id="acme.client" class="%acme.client.class%">
    <argument type="collection">
        <argument key="base_uri">http://acme.com</argument>
        <argument key="timeout">2.0</argument>
    </argument>
    <tag name="csa_guzzle.client" />
</service>

YAML:

acme.client:
    class: %acme.client.class%
    arguments: [{ base_uri: http://acme.com, timeout: 2.0} ]

Next section: Registering new middleware