예제 #1
0
파일: CURL.php 프로젝트: dcarbone/curl-plus
     * @param array $defaultHeaders
     * @param string|array|object $requestBody
     * @return CurlPlusResponse
     */
    private static function _execute($url, $method, array $userOpts, array $defaultOpts, array $userHeaders, array $defaultHeaders = array(), $requestBody = null)
    {
        self::$_client->initialize($url);
        switch ($method) {
            case 'GET':
                $defaultOpts[CURLOPT_HTTPGET] = true;
                break;
            case 'POST':
                $defaultOpts[CURLOPT_POST] = true;
                break;
            default:
                $defaultOpts[CURLOPT_CUSTOMREQUEST] = $method;
        }
        $bodyType = gettype($requestBody);
        if (null !== $requestBody && in_array($method, self::$_methodsWithBody) && !isset($userOpts[CURLOPT_POSTFIELDS])) {
            if ('array' === $bodyType || 'object' === $bodyType) {
                $requestBody = http_build_query($requestBody);
            }
            $defaultOpts[CURLOPT_POSTFIELDS] = $requestBody;
        }
        self::$_client->setCurlOpts($userOpts + $defaultOpts);
        self::$_client->setRequestHeaders($userHeaders + $defaultHeaders);
        return self::$_client->execute(true);
    }
}
CURL::_init();