Class yii\httpclient\CurlFormatter

Inheritanceyii\httpclient\CurlFormatter » yii\base\BaseObject
Implementsyii\httpclient\FormatterInterface
Available since extension's version2.0.9
Source Code https://github.com/yiisoft/yii2-httpclient/blob/master/src/CurlFormatter.php

CURLFormatter is used with CurlTransport to format the content of the request as an array with the field name as key and field data as value

See also \yii\httpclient\CURLOPT_POSTFIELDS.

Public Properties

Hide inherited properties

Property Type Description Defined By
$encodingType integer URL encoding type. yii\httpclient\CurlFormatter

Public Methods

Hide inherited methods

Method Description Defined By
format() Formats given HTTP request message. yii\httpclient\CurlFormatter

Property Details

Hide inherited properties

$encodingType public property

URL encoding type. Possible values are:

  • PHP_QUERY_RFC1738 - encoding is performed per 'RFC 1738' and the 'application/x-www-form-urlencoded' media type, which implies that spaces are encoded as plus (+) signs. This is most common encoding type used by most web applications.
  • PHP_QUERY_RFC3986 - then encoding is performed according to 'RFC 3986', and spaces will be percent encoded (%20). This encoding type is required by OpenID and OAuth protocols.
public integer $encodingType PHP_QUERY_RFC1738

Method Details

Hide inherited methods

format() public method

Formats given HTTP request message.

public yii\httpclient\Request format ( yii\httpclient\Request $request )
$request yii\httpclient\Request

HTTP request instance.

return yii\httpclient\Request

Formatted request.

                public function format(Request $request)
{
    $data = $request->getData();
    if (strcasecmp('GET', $request->getMethod()) === 0) {
        if ($data !== null) {
            $content = http_build_query((array)$data, '', '&', $this->encodingType);
            $request->setFullUrl(null);
            $url = $request->getFullUrl();
            $url .= (strpos($url, '?') === false) ? '?' : '&';
            $url .= $content;
            $request->setFullUrl($url);
        }
        return $request;
    }
    if ($data !== null) {
        $request->setContent($data);
    } else {
        $request->getHeaders()->set('Content-Length', '0');
    }
    return $request;
}