Passed
Pull Request — master (#42)
by
unknown
01:57
created

Router::resource()   B

Complexity

Conditions 10
Paths 1

Size

Total Lines 14
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 10
eloc 11
c 1
b 0
f 0
nc 1
nop 3
dl 0
loc 14
rs 7.6666

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace CoffeeCode\Router;
4
5
use function ICanBoogie\singularize;
6
7
/**
8
 * Class CoffeeCode Router
9
 *
10
 * @author Robson V. Leite <https://github.com/robsonvleite>
11
 * @package CoffeeCode\Router
12
 */
13
class Router extends Dispatch
14
{
15
    /**
16
     * Router constructor.
17
     *
18
     * @param string $projectUrl
19
     * @param null|string $separator
20
     */
21
    public function __construct(string $projectUrl, ?string $separator = ":")
22
    {
23
        parent::__construct($projectUrl, $separator);
24
    }
25
26
    /**
27
     * @param string $route
28
     * @param $handler
29
     * @param string|null $name
30
     */
31
    public function post(string $route, $handler, string $name = null): void
32
    {
33
        $this->addRoute("POST", $route, $handler, $name);
34
    }
35
36
    /**
37
     * @param string $route
38
     * @param $handler
39
     * @param string|null $name
40
     */
41
    public function get(string $route, $handler, string $name = null): void
42
    {
43
        $this->addRoute("GET", $route, $handler, $name);
44
    }
45
46
    /**
47
     * @param string $route
48
     * @param $handler
49
     * @param string|null $name
50
     */
51
    public function put(string $route, $handler, string $name = null): void
52
    {
53
        $this->addRoute("PUT", $route, $handler, $name);
54
    }
55
56
    /**
57
     * @param string $route
58
     * @param $handler
59
     * @param string|null $name
60
     */
61
    public function patch(string $route, $handler, string $name = null): void
62
    {
63
        $this->addRoute("PATCH", $route, $handler, $name);
64
    }
65
66
    /**
67
     * @param string $route
68
     * @param $handler
69
     * @param string|null $name
70
     */
71
    public function delete(string $route, $handler, string $name = null): void
72
    {
73
        $this->addRoute("DELETE", $route, $handler, $name);
74
    }
75
76
    /**
77
     * @param string      $route
78
     * @param             $handler
79
     * @param string|null $name
80
     */
81
    public function resource(string $route, $handler, string $name = null): void
82
    {
83
        $singularized_route = singularize($route);
84
        $key_id = "{" . str_replace("/", "", $singularized_route) ."_id}";
85
86
        $this->addRoute("GET", $route, $handler.":list", ($name ? "{$name}-list" : null));
87
        $this->addRoute("GET", "{$route}/home", $handler.":list", ($name ? "{$name}-home" : null));
88
        $this->addRoute("GET", "{$route}/home/{search}/{page}", $handler.":list", ($name ? "{$name}-is-search" : null));
89
        $this->addRoute("GET", $singularized_route, $handler.":create", ($name ? "{$name}-create" : null));
90
        $this->addRoute("GET", singularize($route)."/{$key_id}", $handler.":edit", ($name ? "{$name}-edit" : null));
91
        $this->addRoute("POST", "{$route}/search", $handler.":search", ($name ? "{$name}-search" : null));
92
        $this->addRoute("POST", $singularized_route, $handler.":store", ($name ? "{$name}-store" : null));
93
        $this->addRoute("POST", singularize($route)."/{$key_id}", $handler.":update", ($name ? "{$name}-update" : null));
94
        $this->addRoute("DELETE", singularize($route)."/{$key_id}", $handler.":delete", ($name ? "{$name}-delete" : null));
95
96
    }
97
}