You are here

RequestContext.php in Zircon Profile 8

File

vendor/symfony/routing/RequestContext.php
View source
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Symfony\Component\Routing;

use Symfony\Component\HttpFoundation\Request;

/**
 * Holds information about the current request.
 *
 * This class implements a fluent interface.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 * @author Tobias Schultze <http://tobion.de>
 */
class RequestContext {
  private $baseUrl;
  private $pathInfo;
  private $method;
  private $host;
  private $scheme;
  private $httpPort;
  private $httpsPort;
  private $queryString;

  /**
   * @var array
   */
  private $parameters = array();

  /**
   * Constructor.
   *
   * @param string $baseUrl     The base URL
   * @param string $method      The HTTP method
   * @param string $host        The HTTP host name
   * @param string $scheme      The HTTP scheme
   * @param int    $httpPort    The HTTP port
   * @param int    $httpsPort   The HTTPS port
   * @param string $path        The path
   * @param string $queryString The query string
   */
  public function __construct($baseUrl = '', $method = 'GET', $host = 'localhost', $scheme = 'http', $httpPort = 80, $httpsPort = 443, $path = '/', $queryString = '') {
    $this
      ->setBaseUrl($baseUrl);
    $this
      ->setMethod($method);
    $this
      ->setHost($host);
    $this
      ->setScheme($scheme);
    $this
      ->setHttpPort($httpPort);
    $this
      ->setHttpsPort($httpsPort);
    $this
      ->setPathInfo($path);
    $this
      ->setQueryString($queryString);
  }

  /**
   * Updates the RequestContext information based on a HttpFoundation Request.
   *
   * @param Request $request A Request instance
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function fromRequest(Request $request) {
    $this
      ->setBaseUrl($request
      ->getBaseUrl());
    $this
      ->setPathInfo($request
      ->getPathInfo());
    $this
      ->setMethod($request
      ->getMethod());
    $this
      ->setHost($request
      ->getHost());
    $this
      ->setScheme($request
      ->getScheme());
    $this
      ->setHttpPort($request
      ->isSecure() ? $this->httpPort : $request
      ->getPort());
    $this
      ->setHttpsPort($request
      ->isSecure() ? $request
      ->getPort() : $this->httpsPort);
    $this
      ->setQueryString($request->server
      ->get('QUERY_STRING', ''));
    return $this;
  }

  /**
   * Gets the base URL.
   *
   * @return string The base URL
   */
  public function getBaseUrl() {
    return $this->baseUrl;
  }

  /**
   * Sets the base URL.
   *
   * @param string $baseUrl The base URL
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setBaseUrl($baseUrl) {
    $this->baseUrl = $baseUrl;
    return $this;
  }

  /**
   * Gets the path info.
   *
   * @return string The path info
   */
  public function getPathInfo() {
    return $this->pathInfo;
  }

  /**
   * Sets the path info.
   *
   * @param string $pathInfo The path info
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setPathInfo($pathInfo) {
    $this->pathInfo = $pathInfo;
    return $this;
  }

  /**
   * Gets the HTTP method.
   *
   * The method is always an uppercased string.
   *
   * @return string The HTTP method
   */
  public function getMethod() {
    return $this->method;
  }

  /**
   * Sets the HTTP method.
   *
   * @param string $method The HTTP method
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setMethod($method) {
    $this->method = strtoupper($method);
    return $this;
  }

  /**
   * Gets the HTTP host.
   *
   * The host is always lowercased because it must be treated case-insensitive.
   *
   * @return string The HTTP host
   */
  public function getHost() {
    return $this->host;
  }

  /**
   * Sets the HTTP host.
   *
   * @param string $host The HTTP host
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setHost($host) {
    $this->host = strtolower($host);
    return $this;
  }

  /**
   * Gets the HTTP scheme.
   *
   * @return string The HTTP scheme
   */
  public function getScheme() {
    return $this->scheme;
  }

  /**
   * Sets the HTTP scheme.
   *
   * @param string $scheme The HTTP scheme
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setScheme($scheme) {
    $this->scheme = strtolower($scheme);
    return $this;
  }

  /**
   * Gets the HTTP port.
   *
   * @return int The HTTP port
   */
  public function getHttpPort() {
    return $this->httpPort;
  }

  /**
   * Sets the HTTP port.
   *
   * @param int $httpPort The HTTP port
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setHttpPort($httpPort) {
    $this->httpPort = (int) $httpPort;
    return $this;
  }

  /**
   * Gets the HTTPS port.
   *
   * @return int The HTTPS port
   */
  public function getHttpsPort() {
    return $this->httpsPort;
  }

  /**
   * Sets the HTTPS port.
   *
   * @param int $httpsPort The HTTPS port
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setHttpsPort($httpsPort) {
    $this->httpsPort = (int) $httpsPort;
    return $this;
  }

  /**
   * Gets the query string.
   *
   * @return string The query string without the "?"
   */
  public function getQueryString() {
    return $this->queryString;
  }

  /**
   * Sets the query string.
   *
   * @param string $queryString The query string (after "?")
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setQueryString($queryString) {

    // string cast to be fault-tolerant, accepting null
    $this->queryString = (string) $queryString;
    return $this;
  }

  /**
   * Returns the parameters.
   *
   * @return array The parameters
   */
  public function getParameters() {
    return $this->parameters;
  }

  /**
   * Sets the parameters.
   *
   * @param array $parameters The parameters
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setParameters(array $parameters) {
    $this->parameters = $parameters;
    return $this;
  }

  /**
   * Gets a parameter value.
   *
   * @param string $name A parameter name
   *
   * @return mixed The parameter value or null if nonexistent
   */
  public function getParameter($name) {
    return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
  }

  /**
   * Checks if a parameter value is set for the given parameter.
   *
   * @param string $name A parameter name
   *
   * @return bool True if the parameter value is set, false otherwise
   */
  public function hasParameter($name) {
    return array_key_exists($name, $this->parameters);
  }

  /**
   * Sets a parameter value.
   *
   * @param string $name      A parameter name
   * @param mixed  $parameter The parameter value
   *
   * @return RequestContext The current instance, implementing a fluent interface
   */
  public function setParameter($name, $parameter) {
    $this->parameters[$name] = $parameter;
    return $this;
  }

}

Classes

Namesort descending Description
RequestContext Holds information about the current request.