Modules

abstract Kohana_HTTP

Contains the most low-level helpers methods in Kohana:

  • Environment initialization
  • Locating files within the cascading filesystem
  • Auto-loading and transparent extension of classes
  • Variable and path debugging
package
Kohana
category
HTTP
author
Kohana Team
since
3.1.0
copyright
© 2008-2012 Kohana Team
license
http://kohanaphp.com/license

Class declared in SYSPATH/classes/kohana/http.php on line 17.

Properties

public static The $protocol

default protocol to use if it cannot be detected

string(8) "HTTP/1.1"

Methods

public static parse_header_string( string $header_string ) (defined in Kohana_HTTP)

Parses a HTTP header string into an associative array

Parameters

  • string $header_string required - Header string to parse

Return Values

  • HTTP_Header

Source Code

public static function parse_header_string($header_string)
{
	// If the PECL HTTP extension is loaded
	if (extension_loaded('http'))
	{
		// Use the fast method to parse header string
		return new HTTP_Header(http_parse_headers($header_string));
	}

	// Otherwise we use the slower PHP parsing
	$headers = array();

	// Match all HTTP headers
	if (preg_match_all('/(\w[^\s:]*):[ ]*([^\r\n]*(?:\r\n[ \t][^\r\n]*)*)/', $header_string, $matches))
	{
		// Parse each matched header
		foreach ($matches[0] as $key => $value)
		{
			// If the header has not already been set
			if ( ! isset($headers[$matches[1][$key]]))
			{
				// Apply the header directly
				$headers[$matches[1][$key]] = $matches[2][$key];
			}
			// Otherwise there is an existing entry
			else
			{
				// If the entry is an array
				if (is_array($headers[$matches[1][$key]]))
				{
					// Apply the new entry to the array
					$headers[$matches[1][$key]][] = $matches[2][$key];
				}
				// Otherwise create a new array with the entries
				else
				{
					$headers[$matches[1][$key]] = array(
						$headers[$matches[1][$key]],
						$matches[2][$key],
					);
				}
			}
		}
	}

	// Return the headers
	return new HTTP_Header($headers);
}

public static request_headers( ) (defined in Kohana_HTTP)

Parses the the HTTP request headers and returns an array containing key value pairs. This method is slow, but provides an accurate representation of the HTTP request.

 // Get http headers into the request
 $request->headers = HTTP::request_headers();

Return Values

  • HTTP_Header

Source Code

public static function request_headers()
{
	// If running on apache server
	if (function_exists('apache_request_headers'))
	{
		// Return the much faster method
		return new HTTP_Header(apache_request_headers());
	}
	// If the PECL HTTP tools are installed
	elseif (extension_loaded('http'))
	{
		// Return the much faster method
		return new HTTP_Header(http_get_request_headers());
	}

	// Setup the output
	$headers = array();

	// Parse the content type
	if ( ! empty($_SERVER['CONTENT_TYPE']))
	{
		$headers['content-type'] = $_SERVER['CONTENT_TYPE'];
	}

	// Parse the content length
	if ( ! empty($_SERVER['CONTENT_LENGTH']))
	{
		$headers['content-length'] = $_SERVER['CONTENT_LENGTH'];
	}

	foreach ($_SERVER as $key => $value)
	{
		// If there is no HTTP header here, skip
		if (strpos($key, 'HTTP_') !== 0)
		{
			continue;
		}

		// This is a dirty hack to ensure HTTP_X_FOO_BAR becomes x-foo-bar
		$headers[str_replace(array('HTTP_', '_'), array('', '-'), $key)] = $value;
	}

	return new HTTP_Header($headers);
}

public static www_form_urlencode( [ array $params = array(0) ] ) (defined in Kohana_HTTP)

Processes an array of key value pairs and encodes the values to meet RFC 3986

Parameters

  • array $params = array(0) - Params

Return Values

  • string

Source Code

public static function www_form_urlencode(array $params = array())
{
	if ( ! $params)
		return;

	$encoded = array();

	foreach ($params as $key => $value)
	{
		$encoded[] = $key.'='.rawurlencode($value);
	}

	return implode('&', $encoded);
}