Completed
Push — master ( 86dc59...402f04 )
by René
03:28
created

Router::connect()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 10
ccs 7
cts 7
cp 1
rs 9.4285
cc 2
eloc 6
nc 2
nop 3
crap 2
1
<?php
2
3
namespace Zortje\MVC\Routing;
4
5
use Zortje\MVC\Routing\Exception\MissingRouteException;
6
use Zortje\MVC\Routing\Exception\RouteAlreadyConnectedException;
7
8
/**
9
 * Class Router
10
 *
11
 * @package Zortje\MVC\Routing
12
 */
13
class Router {
14
15
	/**
16
	 * @var array Routes
17
	 */
18
	private $routes = [];
19
20
	/**
21
	 * Connects a new route in the router
22
	 *
23
	 * @param string $route      Route
24
	 * @param string $controller Controller
25
	 * @param string $action     Action
26
	 *
27
	 * @throws RouteAlreadyConnectedException When route is already connected
28
	 */
29 2
	public function connect($route, $controller, $action) {
30 2
		if (isset($this->routes[$route]) === true) {
31 1
			throw new RouteAlreadyConnectedException([$route]);
32
		}
33
34 2
		$this->routes[$route] = [
35 2
			'controller' => $controller,
36
			'action'     => $action
37 2
		];
38 2
	}
39
40
	/**
41
	 * Route to get controller and action
42
	 *
43
	 * @param string $route Route
44
	 *
45
	 * @return array Controller and action
46
	 *
47
	 * @throws MissingRouteException When route is not connected
48
	 */
49 1
	public function route($route) {
50 1
		if (isset($this->routes[$route]) === false) {
51
			throw new MissingRouteException([$route]);
52
		}
53
54 1
		$result = $this->routes[$route];
55
56 1
		return $result;
57
	}
58
59
}
60