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

Router   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 91.67%

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 4
c 4
b 0
f 0
lcom 1
cbo 2
dl 0
loc 47
ccs 11
cts 12
cp 0.9167
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A connect() 0 10 2
A route() 0 9 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