Route.php 2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<?php
/*
	Question2Answer by Gideon Greenspan and contributors
	http://www.question2answer.org/

	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public License
	as published by the Free Software Foundation; either version 2
	of the License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	More about this license: http://www.question2answer.org/license.php
*/

19
namespace Q2A\Http;
20 21 22 23 24 25 26 27 28 29 30 31 32

class Route
{
	/** @var string */
	private $httpMethod;

	/** @var string */
	private $routePath;

	/** @var string */
	private $controller;

	/** @var string */
33
	private $action;
34 35

	/** @var array */
Scott committed
36
	private $options;
37

Scott committed
38 39 40 41
	/** @var array */
	private $parameters = [];

	public function __construct($httpMethod, $routePath, $controller = '', $action = '', array $options = [])
42
	{
43
		$this->httpMethod = strtoupper($httpMethod);
44 45
		$this->routePath = $routePath;
		$this->controller = $controller;
46
		$this->action = $action;
Scott committed
47
		$this->options = $options;
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
	}

	/**
	 * @return string
	 */
	public function getHttpMethod()
	{
		return $this->httpMethod;
	}

	/**
	 * @return string
	 */
	public function getRoutePath()
	{
		return $this->routePath;
	}

	/**
	 * @return string
	 */
	public function getController()
	{
		return $this->controller;
	}

	/**
	 * @return string
	 */
77
	public function getAction()
78
	{
79
		return $this->action;
80 81
	}

Scott committed
82 83 84 85 86 87 88 89
	/**
	 * @return string
	 */
	public function getOption($name)
	{
		return isset($this->options[$name]) ? $this->options[$name] : null;
	}

90 91 92 93 94 95 96
	/**
	 * @return array
	 */
	public function getParameters()
	{
		return $this->parameters;
	}
97 98 99 100 101 102 103 104 105 106

	/**
	 * Bind actual request parameters to the route, replacing any existing ones.
	 *
	 * @param array $parameters
	 */
	public function setParameters($parameters)
	{
		$this->parameters = $parameters;
	}
107
}