Code Duplication    Length = 199-201 lines in 2 locations

src/Controller/SampleAppController.php 1 location

@@ 19-219 (lines=201) @@
16
 * The controller is mounted on a particular route and can then handle all
17
 * requests for that mount point.
18
 */
19
class SampleAppController implements AppInjectableInterface
20
{
21
    use AppInjectableTrait;
22
23
24
25
    /**
26
     * @var string $db a sample member variable that gets initialised
27
     */
28
    private $db = "not active";
29
30
31
32
    /**
33
     * The initialize method is optional and will always be called before the
34
     * target method/action. This is a convienient method where you could
35
     * setup internal properties that are commonly used by several methods.
36
     *
37
     * @return void
38
     */
39
    public function initialize() : void
40
    {
41
        // Use to initialise member variables.
42
        $this->db = "active";
43
44
        // Use $this->app to access the framework services.
45
    }
46
47
48
49
    /**
50
     * This is the index method action, it handles:
51
     * ANY METHOD mountpoint
52
     * ANY METHOD mountpoint/
53
     * ANY METHOD mountpoint/index
54
     *
55
     * @return string
56
     */
57
    public function indexAction() : string
58
    {
59
        // Deal with the action and return a response.
60
        return __METHOD__ . ", \$db is {$this->db}";
61
    }
62
63
64
65
    /**
66
     * This sample method dumps the content of $app.
67
     * GET mountpoint/dump-app
68
     *
69
     * @return string
70
     */
71
    public function dumpAppActionGet() : string
72
    {
73
        // Deal with the action and return a response.
74
        $services = implode(", ", $this->app->getServices());
75
        return __METHOD__ . "<p>\$app contains: $services";
76
    }
77
78
79
80
    /**
81
     * Add the request method to the method name to limit what request methods
82
     * the handler supports.
83
     * GET mountpoint/info
84
     *
85
     * @return string
86
     */
87
    public function infoActionGet() : string
88
    {
89
        // Deal with the action and return a response.
90
        return __METHOD__ . ", \$db is {$this->db}";
91
    }
92
93
94
95
    /**
96
     * This sample method action it the handler for route:
97
     * GET mountpoint/create
98
     *
99
     * @return string
100
     */
101
    public function createActionGet() : string
102
    {
103
        // Deal with the action and return a response.
104
        return __METHOD__ . ", \$db is {$this->db}";
105
    }
106
107
108
109
    /**
110
     * This sample method action it the handler for route:
111
     * POST mountpoint/create
112
     *
113
     * @return string
114
     */
115
    public function createActionPost() : string
116
    {
117
        // Deal with the action and return a response.
118
        return __METHOD__ . ", \$db is {$this->db}";
119
    }
120
121
122
123
    /**
124
     * This sample method action takes one argument:
125
     * GET mountpoint/argument/<value>
126
     *
127
     * @param mixed $value
128
     *
129
     * @return string
130
     */
131
    public function argumentActionGet($value) : string
132
    {
133
        // Deal with the action and return a response.
134
        return __METHOD__ . ", \$db is {$this->db}, got argument '$value'";
135
    }
136
137
138
139
    /**
140
     * This sample method action takes zero or one argument and you can use - as a separator which will then be removed:
141
     * GET mountpoint/defaultargument/
142
     * GET mountpoint/defaultargument/<value>
143
     * GET mountpoint/default-argument/
144
     * GET mountpoint/default-argument/<value>
145
     *
146
     * @param mixed $value with a default string.
147
     *
148
     * @return string
149
     */
150
    public function defaultArgumentActionGet($value = "default") : string
151
    {
152
        // Deal with the action and return a response.
153
        return __METHOD__ . ", \$db is {$this->db}, got argument '$value'";
154
    }
155
156
157
158
    /**
159
     * This sample method action takes two typed arguments:
160
     * GET mountpoint/typed-argument/<string>/<int>
161
     *
162
     * NOTE. Its recommended to not use int as type since it will still
163
     * accept numbers such as 2hundred givving a PHP NOTICE. So, its better to
164
     * deal with type check within the action method and throuw exceptions
165
     * when the expected type is not met.
166
     *
167
     * @param mixed $value with a default string.
168
     *
169
     * @return string
170
     */
171
    public function typedArgumentActionGet(string $str, int $int) : string
172
    {
173
        // Deal with the action and return a response.
174
        return __METHOD__ . ", \$db is {$this->db}, got string argument '$str' and int argument '$int'.";
175
    }
176
177
178
179
    /**
180
     * This sample method action takes a variadic list of arguments:
181
     * GET mountpoint/variadic/
182
     * GET mountpoint/variadic/<value>
183
     * GET mountpoint/variadic/<value>/<value>
184
     * GET mountpoint/variadic/<value>/<value>/<value>
185
     * etc.
186
     *
187
     * @param array $value as a variadic parameter.
188
     *
189
     * @return string
190
     */
191
    public function variadicActionGet(...$value) : string
192
    {
193
        // Deal with the action and return a response.
194
        return __METHOD__ . ", \$db is {$this->db}, got '" . count($value) . "' arguments: " . implode(", ", $value);
195
    }
196
197
198
199
    /**
200
     * Adding an optional catchAll() method will catch all actions sent to the
201
     * router. YOu can then reply with an actual response or return void to
202
     * allow for the router to move on to next handler.
203
     * A catchAll() handles the following, if a specific action method is not
204
     * created:
205
     * ANY METHOD mountpoint/**
206
     *
207
     * @param array $args as a variadic parameter.
208
     *
209
     * @return mixed
210
     *
211
     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
212
     */
213
    public function catchAll(...$args)
214
    {
215
        // Deal with the request and send an actual response, or not.
216
        //return __METHOD__ . ", \$db is {$this->db}, got '" . count($args) . "' arguments: " . implode(", ", $args);
217
        return;
218
    }
219
}
220

src/Controller/SampleController.php 1 location

@@ 19-217 (lines=199) @@
16
 * The controller is mounted on a particular route and can then handle all
17
 * requests for that mount point.
18
 */
19
class SampleController implements ContainerInjectableInterface
20
{
21
    use ContainerInjectableTrait;
22
23
24
25
    /**
26
     * @var string $db a sample member variable that gets initialised
27
     */
28
    private $db = "not active";
29
30
31
32
    /**
33
     * The initialize method is optional and will always be called before the
34
     * target method/action. This is a convienient method where you could
35
     * setup internal properties that are commonly used by several methods.
36
     *
37
     * @return void
38
     */
39
    public function initialize() : void
40
    {
41
        // Use to initialise member variables.
42
        $this->db = "active";
43
    }
44
45
46
47
    /**
48
     * This is the index method action, it handles:
49
     * ANY METHOD mountpoint
50
     * ANY METHOD mountpoint/
51
     * ANY METHOD mountpoint/index
52
     *
53
     * @return string
54
     */
55
    public function indexAction() : string
56
    {
57
        // Deal with the action and return a response.
58
        return __METHOD__ . ", \$db is {$this->db}";
59
    }
60
61
62
63
    /**
64
     * This sample method dumps the content of $di.
65
     * GET mountpoint/dump-app
66
     *
67
     * @return string
68
     */
69
    public function dumpDiActionGet() : string
70
    {
71
        // Deal with the action and return a response.
72
        $services = implode(", ", $this->di->getServices());
73
        return __METHOD__ . "<p>\$di contains: $services";
74
    }
75
76
77
78
    /**
79
     * Add the request method to the method name to limit what request methods
80
     * the handler supports.
81
     * GET mountpoint/info
82
     *
83
     * @return string
84
     */
85
    public function infoActionGet() : string
86
    {
87
        // Deal with the action and return a response.
88
        return __METHOD__ . ", \$db is {$this->db}";
89
    }
90
91
92
93
    /**
94
     * This sample method action it the handler for route:
95
     * GET mountpoint/create
96
     *
97
     * @return string
98
     */
99
    public function createActionGet() : string
100
    {
101
        // Deal with the action and return a response.
102
        return __METHOD__ . ", \$db is {$this->db}";
103
    }
104
105
106
107
    /**
108
     * This sample method action it the handler for route:
109
     * POST mountpoint/create
110
     *
111
     * @return string
112
     */
113
    public function createActionPost() : string
114
    {
115
        // Deal with the action and return a response.
116
        return __METHOD__ . ", \$db is {$this->db}";
117
    }
118
119
120
121
    /**
122
     * This sample method action takes one argument:
123
     * GET mountpoint/argument/<value>
124
     *
125
     * @param mixed $value
126
     *
127
     * @return string
128
     */
129
    public function argumentActionGet($value) : string
130
    {
131
        // Deal with the action and return a response.
132
        return __METHOD__ . ", \$db is {$this->db}, got argument '$value'";
133
    }
134
135
136
137
    /**
138
     * This sample method action takes zero or one argument and you can use - as a separator which will then be removed:
139
     * GET mountpoint/defaultargument/
140
     * GET mountpoint/defaultargument/<value>
141
     * GET mountpoint/default-argument/
142
     * GET mountpoint/default-argument/<value>
143
     *
144
     * @param mixed $value with a default string.
145
     *
146
     * @return string
147
     */
148
    public function defaultArgumentActionGet($value = "default") : string
149
    {
150
        // Deal with the action and return a response.
151
        return __METHOD__ . ", \$db is {$this->db}, got argument '$value'";
152
    }
153
154
155
156
    /**
157
     * This sample method action takes two typed arguments:
158
     * GET mountpoint/typed-argument/<string>/<int>
159
     *
160
     * NOTE. Its recommended to not use int as type since it will still
161
     * accept numbers such as 2hundred givving a PHP NOTICE. So, its better to
162
     * deal with type check within the action method and throuw exceptions
163
     * when the expected type is not met.
164
     *
165
     * @param mixed $value with a default string.
166
     *
167
     * @return string
168
     */
169
    public function typedArgumentActionGet(string $str, int $int) : string
170
    {
171
        // Deal with the action and return a response.
172
        return __METHOD__ . ", \$db is {$this->db}, got string argument '$str' and int argument '$int'.";
173
    }
174
175
176
177
    /**
178
     * This sample method action takes a variadic list of arguments:
179
     * GET mountpoint/variadic/
180
     * GET mountpoint/variadic/<value>
181
     * GET mountpoint/variadic/<value>/<value>
182
     * GET mountpoint/variadic/<value>/<value>/<value>
183
     * etc.
184
     *
185
     * @param array $value as a variadic parameter.
186
     *
187
     * @return string
188
     */
189
    public function variadicActionGet(...$value) : string
190
    {
191
        // Deal with the action and return a response.
192
        return __METHOD__ . ", \$db is {$this->db}, got '" . count($value) . "' arguments: " . implode(", ", $value);
193
    }
194
195
196
197
    /**
198
     * Adding an optional catchAll() method will catch all actions sent to the
199
     * router. YOu can then reply with an actual response or return void to
200
     * allow for the router to move on to next handler.
201
     * A catchAll() handles the following, if a specific action method is not
202
     * created:
203
     * ANY METHOD mountpoint/**
204
     *
205
     * @param array $args as a variadic parameter.
206
     *
207
     * @return mixed
208
     *
209
     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
210
     */
211
    public function catchAll(...$args)
212
    {
213
        // Deal with the request and send an actual response, or not.
214
        //return __METHOD__ . ", \$db is {$this->db}, got '" . count($args) . "' arguments: " . implode(", ", $args);
215
        return;
216
    }
217
}
218