Skip to content

Latest commit

 

History

History
78 lines (59 loc) · 2 KB

clients.md

File metadata and controls

78 lines (59 loc) · 2 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:
            class: AppBundle\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 has no constructor arguments.

If you need to pass constructor arguments to your class, then you should use the tag syntax (see below).

Registering your own service

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

<service id="acme.client" class="%acme.client.class%">
    <tag name="csa_guzzle.client" />
</service>

Next section: Registering new middleware