Ein einfacher HttpClient für PHP Projekte

von CodeKanal @codekanal
HttpClient::request('DELETE', '/api/endpoint/4')

Für umfassende Interaktionen mit einer REST API über HTTP gibt es viele gute PHP Bibliotheken. Die bekannteste dürfte Guzzle sein.

Wenn dieses Bibliothek zu groß oder unpassend für ein Projekt ist, kann auch eine kleine eigene Klasse abhilfe schaffen.

Der folgende minimale HTTP Klient kann unter anderem:

Die Klasse - weniger als 40 Zeilen Code!

class HttpClient
{
    public static $ch;

    public static function request($method = 'GET', $url, $data = [], $options = [])
    {
        $curlOptions = [
            CURLOPT_MAXREDIRS => 0,
            CURLOPT_TIMEOUT => 10,
            CURLOPT_RETURNTRANSFER => true,
        ];

        switch ($method) {
            case 'GET':
                break;
            case 'POST':
                $curlOptions[CURLOPT_POST] = true;
                $curlOptions[CURLOPT_POSTFIELDS] = $data;
                break;
            default:
                $curlOptions[CURLOPT_CUSTOMREQUEST] = $method; // eg. DELETE
        }

        $curlOptions[CURLOPT_URL] = $url;

        $curlOptions = $curlOptions + $options;

        static::$ch = curl_init();
        curl_setopt_array(static::$ch, $curlOptions);
        return [
            'data' => curl_exec(static::$ch),
            'statusCode' => curl_getinfo(static::$ch, CURLINFO_RESPONSE_CODE)
        ];
    }
}

Für die Fehler Diagnose var_dump(curl_error(HttpClient::$ch)).