Le "repository" principal pour les librairies php se trouve à l'adresse https://packagist.org/

Imaginons que nous ayons besoin d'une librairie qui nous permettra de  faire appel à des services web avec des méthodes un peu comparables à celle de javascript (promise, await, async ...).  Il existe un package qui permet cela : guzzle

Si l'on veut bénéficier de l'autoloader, il faudra commencer par 

composer init

puis ajouter dans le fichier composer.json :

{
    "name": "coopernet/composer",
    "authors": [
        {
            "name": "yvandouenel",
            "email": "y.douenel@coopernet.fr"
        }
    ],
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}

Installation de guzzle

composer require guzzlehttp/guzzle

Ce qui va venir modifier le fichier composer.json :

{
    "name": "coopernet/composer",
    "authors": [
        {
            "name": "yvandouenel",
            "email": "y.douenel@coopernet.fr"
        }
    ],
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    },
    "require": {
        "guzzlehttp/guzzle": "^7.0"
    }
}

Enfin, il suffira d'appeler l'autoloader dans le fichier php (ici index.php) et appeler le package racine pour utiliser guzzle :

<?php
require 'vendor/autoload.php';
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');

echo $response->getStatusCode(); // 200
echo $response->getHeaderLine('content-type'); // 'application/json; charset=utf8'
echo $response->getBody(); // '{"id": 1420053, "name": "guzzle", ...}'

// Send an asynchronous request.
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
    echo 'I completed! ' . $response->getBody();
});

$promise->wait();