Skip to content

Commit 3d3d727

Browse files
authored
Merge pull request #66 from wollanup/develop
add request in action classes
2 parents 47a13f7 + 0b5e2fe commit 3d3d727

File tree

3 files changed

+57
-11
lines changed

3 files changed

+57
-11
lines changed

src/Action/ActionAbstract.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Eukles\Container\ContainerTrait;
66
use Propel\Runtime\ActiveQuery\ModelCriteria;
77
use Psr\Container\ContainerInterface;
8+
use Psr\Http\Message\RequestInterface;
89
use Psr\Http\Message\ResponseInterface;
910

1011
/**
@@ -25,6 +26,11 @@ abstract class ActionAbstract implements ActionInterface
2526
*/
2627
protected $response;
2728

29+
/**
30+
* @var RequestInterface
31+
*/
32+
protected $request;
33+
2834
/**
2935
* SlimControllerInterface constructor.
3036
*
@@ -58,4 +64,24 @@ public function setResponse(ResponseInterface $response): ActionInterface
5864

5965
return $this;
6066
}
67+
68+
/**
69+
* @param RequestInterface $request
70+
*
71+
* @return ActionInterface
72+
*/
73+
public function setRequest(RequestInterface $request): ActionInterface
74+
{
75+
$this->request = $request;
76+
77+
return $this;
78+
}
79+
80+
/**
81+
* @return RequestInterface
82+
*/
83+
public function getRequest(): RequestInterface
84+
{
85+
return $this->request;
86+
}
6187
}

src/Action/ActionInterface.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Eukles\Service\QueryModifier\QueryModifierInterface;
66
use Propel\Runtime\ActiveQuery\ModelCriteria;
77
use Psr\Container\ContainerInterface;
8+
use Psr\Http\Message\RequestInterface;
89
use Psr\Http\Message\ResponseInterface;
910

1011
/**
@@ -46,6 +47,18 @@ public function getResponse(): ResponseInterface;
4647
*/
4748
public function setResponse(ResponseInterface $response): ActionInterface;
4849

50+
/**
51+
* @param RequestInterface $request
52+
*
53+
* @return ActionInterface
54+
*/
55+
public function setRequest(RequestInterface $request): ActionInterface;
56+
57+
/**
58+
* @return RequestInterface
59+
*/
60+
public function getRequest(): RequestInterface;
61+
4962
/**
5063
* Action factory
5164
*

src/Slim/Handlers/Strategies/ActionStrategy.php

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,22 @@
22

33
namespace Eukles\Slim\Handlers\Strategies;
44

5+
use Closure;
56
use Eukles\Action;
67
use Eukles\Container\ContainerInterface;
78
use Eukles\Service\Pagination\PaginationInterface;
89
use Eukles\Service\QueryModifier\QueryModifierInterface;
910
use Eukles\Service\ResponseBuilder\ResponseBuilderException;
1011
use Eukles\Service\ResponseFormatter\ResponseFormatterException;
1112
use Eukles\Slim\Handlers\ApiProblemRendererTrait;
13+
use Exception;
14+
use InvalidArgumentException;
1215
use Psr\Http\Message\ResponseInterface;
1316
use Psr\Http\Message\ServerRequestInterface;
1417
use Psr\Http\Message\UploadedFileInterface;
18+
use ReflectionClass;
19+
use ReflectionException;
20+
use ReflectionParameter;
1521
use Slim\Interfaces\InvocationStrategyInterface;
1622

1723
/**
@@ -48,7 +54,7 @@ public function __construct(ContainerInterface $container)
4854
* @param array $routeArguments
4955
*
5056
* @return mixed
51-
* @throws \Exception
57+
* @throws Exception
5258
*/
5359
public function __invoke(
5460
callable $callable,
@@ -81,7 +87,7 @@ public function callAction(
8187

8288
try {
8389
return call_user_func_array($callable, $this->buildParams($callable, $request, $routeArguments));
84-
} catch (\Exception $e) {
90+
} catch (Exception $e) {
8591
$handler = $this->container->getActionErrorHandler();
8692

8793
return $handler($e, $request, $response);
@@ -96,7 +102,7 @@ public function callAction(
96102
* @param $routeArguments
97103
*
98104
* @return array
99-
* @throws \ReflectionException
105+
* @throws ReflectionException
100106
*/
101107
protected function buildParams(
102108
callable $callable,
@@ -108,7 +114,7 @@ protected function buildParams(
108114
return [];
109115
}
110116

111-
$r = new \ReflectionClass($callable[0]);
117+
$r = new ReflectionClass($callable[0]);
112118
$m = $r->getMethod($callable[1]);
113119
$paramsMethod = $m->getParameters();
114120

@@ -124,7 +130,7 @@ protected function buildParams(
124130

125131
$buildParams = [];
126132

127-
/** @var \ReflectionParameter[] $params */
133+
/** @var ReflectionParameter[] $params */
128134
foreach ($paramsMethod as $param) {
129135
$name = $param->getName();
130136
$class = $param->getClass();
@@ -141,7 +147,7 @@ protected function buildParams(
141147
/** @var UploadedFileInterface $attachment */
142148
$buildParams[] = isset($files[0]) ? $files[0] : null;
143149
} elseif (!$param->isDefaultValueAvailable()) {
144-
throw new \InvalidArgumentException(
150+
throw new InvalidArgumentException(
145151
"Missing or null required parameter '{$name}' in " . $r->getName() . "::" . $m->getName()
146152
);
147153
}
@@ -155,7 +161,7 @@ protected function buildParams(
155161
} elseif ($param->isDefaultValueAvailable()) {
156162
$paramValue = $param->getDefaultValue();
157163
} else {
158-
throw new \InvalidArgumentException(
164+
throw new InvalidArgumentException(
159165
"Missing or null required parameter '{$name}' in " . $r->getName() . "::" . $m->getName()
160166
);
161167
}
@@ -170,10 +176,10 @@ protected function buildParams(
170176
* Build a string response
171177
*
172178
* @param mixed $result
173-
* @param \Psr\Http\Message\ResponseInterface $response
179+
* @param ResponseInterface $response
174180
*
175181
* @return ResponseInterface
176-
* @throws \Exception
182+
* @throws Exception
177183
*/
178184
protected function buildResponse($result, ResponseInterface $response)
179185
{
@@ -202,7 +208,7 @@ protected function buildResponse($result, ResponseInterface $response)
202208
* @param array $routeArguments
203209
*
204210
* @return mixed
205-
* @throws \Exception
211+
* @throws Exception
206212
*/
207213
protected function callHandler(
208214
callable $callable,
@@ -211,13 +217,14 @@ protected function callHandler(
211217
array $routeArguments
212218
) {
213219
# Action is a closure
214-
if ($callable instanceof \Closure) {
220+
if ($callable instanceof Closure) {
215221
array_unshift($routeArguments, $request, $response);
216222
$result = call_user_func_array($callable, $routeArguments);
217223
} else {
218224
# Action is a method of an Action class
219225
if (is_array($callable) && $callable[0] instanceof Action\ActionInterface) {
220226
$callable[0]->setResponse($response);
227+
$callable[0]->setRequest($request);
221228
}
222229

223230
# Call Action method

0 commit comments

Comments
 (0)