Class yii\httpclient\UrlEncodedFormatter

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

UrlEncodedFormatter formats HTTP message as 'application/x-www-form-urlencoded'.

Public Properties

Hide inherited properties

Property Type Description Defined By
$charset string The content charset. yii\httpclient\UrlEncodedFormatter
$encodingType integer URL encoding type. yii\httpclient\UrlEncodedFormatter

Public Methods

Hide inherited methods

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

Property Details

Hide inherited properties

$charset public property (available since version 2.0.1)

The content charset. If not set, it will use the value of \yii\base\Application::charset.

public string $charset null
$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)
{
    if (($data = $request->getData()) !== null) {
        $content = http_build_query((array)$data, '', '&', $this->encodingType);
    }
    if (strcasecmp('GET', $request->getMethod()) === 0) {
        if (!empty($content)) {
            $request->setFullUrl(null);
            $url = $request->getFullUrl();
            $url .= (strpos($url, '?') === false) ? '?' : '&';
            $url .= $content;
            $request->setFullUrl($url);
        }
        return $request;
    }
    $charset = $this->charset === null ? Yii::$app->charset : $this->charset;
    $charset = $charset ? '; charset=' . $charset : '';
    $request->getHeaders()->set('Content-Type', 'application/x-www-form-urlencoded' . $charset);
    if (isset($content)) {
        $request->setContent($content);
    }
    if (!isset($content) && !isset($request->getOptions()[CURLOPT_INFILE])) {
        $request->getHeaders()->set('Content-Length', '0');
    }
    return $request;
}