Skip to content

Commit 979faa8

Browse files
committed
Remove pass request by reference approach
1 parent 1231677 commit 979faa8

3 files changed

Lines changed: 28 additions & 37 deletions

File tree

src/MiddlewareStack.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class MiddlewareStack implements MiddlewareStackInterface
4343
/**
4444
* {@inheritdoc}
4545
*/
46-
public function process(ServerRequestInterface &$request, ResponseInterface $response)
46+
public function process(ServerRequestInterface $request, ResponseInterface $response)
4747
{
4848
try {
4949
$response = $this->callMiddlewareStack($request, $response);
@@ -86,8 +86,8 @@ public function &addMiddleware(callable $callable)
8686
$this->seedMiddlewareStack();
8787
}
8888
$next = $this->stack->top();
89-
$this->stack[] = function (ServerRequestInterface &$req, ResponseInterface $res) use ($callable, $next) {
90-
$result = call_user_func_array($callable, [&$req, $res, $next]);
89+
$this->stack[] = function (ServerRequestInterface $req, ResponseInterface $res) use ($callable, $next) {
90+
$result = call_user_func_array($callable, [$req, $res, $next]);
9191
if ($result instanceof ResponseInterface === false) {
9292
throw new UnexpectedValueException('Middleware must return instance of \Psr\Http\Message\ResponseInterface');
9393
}
@@ -126,15 +126,15 @@ protected function seedMiddlewareStack(callable $kernel = null)
126126
*
127127
* @return ResponseInterface
128128
*/
129-
protected function callMiddlewareStack(ServerRequestInterface &$req, ResponseInterface $res)
129+
protected function callMiddlewareStack(ServerRequestInterface $req, ResponseInterface $res)
130130
{
131131
if (is_null($this->stack)) {
132132
$this->seedMiddlewareStack();
133133
}
134134
/** @var callable $start */
135135
$start = $this->stack->top();
136136
$this->middleware_lock = true;
137-
$resp = call_user_func_array($start, [&$req, $res]);
137+
$resp = call_user_func_array($start, [$req, $res]);
138138
$this->middleware_lock = false;
139139

140140
return $resp;
@@ -153,7 +153,7 @@ protected function callMiddlewareStack(ServerRequestInterface &$req, ResponseInt
153153
*
154154
* @return ResponseInterface
155155
*/
156-
public function __invoke(ServerRequestInterface &$request, ResponseInterface $response)
156+
public function __invoke(ServerRequestInterface $request, ResponseInterface $response)
157157
{
158158
return $response;
159159
}
@@ -183,10 +183,10 @@ public function &setExceptionHandler(callable $handler = null)
183183
* @return ResponseInterface
184184
* @throws Exception
185185
*/
186-
protected function handleException(Exception $e, ServerRequestInterface &$request, ResponseInterface $response)
186+
protected function handleException(Exception $e, ServerRequestInterface $request, ResponseInterface $response)
187187
{
188188
if ($this->exception_handler) {
189-
return call_user_func_array($this->exception_handler, [$e, &$request, $response]);
189+
return call_user_func_array($this->exception_handler, [$e, $request, $response]);
190190
}
191191

192192
throw $e; // No handlers found, so just throw the exception
@@ -217,10 +217,10 @@ public function &setPhpErrorHandler(callable $handler = null)
217217
* @return ResponseInterface
218218
* @throws Throwable
219219
*/
220-
protected function handlePhpError(Throwable $e, ServerRequestInterface &$request, ResponseInterface $response)
220+
protected function handlePhpError(Throwable $e, ServerRequestInterface $request, ResponseInterface $response)
221221
{
222222
if ($this->php_error_handler) {
223-
return call_user_func_array($this->php_error_handler, [$e, &$request, $response]);
223+
return call_user_func_array($this->php_error_handler, [$e, $request, $response]);
224224
}
225225

226226
throw $e; // No handlers found, so just throw the exception

src/MiddlewareStackInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ interface MiddlewareStackInterface
3131
* @return ResponseInterface
3232
* @throws Exception
3333
*/
34-
public function process(ServerRequestInterface &$request, ResponseInterface $response);
34+
public function process(ServerRequestInterface $request, ResponseInterface $response);
3535

3636
/**
3737
* Add middleware.

test/src/StackExecutionTest.php

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -85,17 +85,11 @@ public function testStackExecution()
8585
$this->assertSame(6, $outer_post_exec);
8686
}
8787

88-
public function testRequestAttributes()
88+
public function testRequestAttributesDontBubbleOut()
8989
{
9090
$stack = new MiddlewareStack();
9191

92-
$execution_counter = 1;
93-
94-
$inner_pre_exec = $inner_post_exec = false;
95-
$middle_pre_exec = $middle_post_exec = false;
96-
$outer_pre_exec = $outer_post_exec = false;
97-
98-
$stack->addMiddleware(function (ServerRequestInterface &$request, ResponseInterface $response, callable $next = null) use (&$execution_counter, &$inner_pre_exec, &$inner_post_exec) {
92+
$outer_middleware = function (ServerRequestInterface $request, ResponseInterface $response, callable $next = null) {
9993
$counter = $request->getAttribute('counter');
10094

10195
if (empty($counter)) {
@@ -104,23 +98,20 @@ public function testRequestAttributes()
10498
$request = $request->withAttribute('counter', $counter + 1);
10599
}
106100

101+
$this->assertSame(1, $request->getAttribute('counter'));
102+
107103
if (is_callable($next)) {
108104
/** @var ServerRequestInterface $request */
109105
$response = $next($request, $response);
110106
}
111107

112-
$counter = $request->getAttribute('counter');
113-
114-
if (empty($counter)) {
115-
$request = $request->withAttribute('counter', 1);
116-
} else {
117-
$request = $request->withAttribute('counter', $counter + 1);
118-
}
108+
$request = $request->withAttribute('counter', $request->getAttribute('counter') + 1);
109+
$this->assertSame(2, $request->getAttribute('counter'));
119110

120111
return $response;
121-
});
112+
};
122113

123-
$stack->addMiddleware(function (ServerRequestInterface &$request, ResponseInterface $response, callable $next = null) use (&$execution_counter, &$middle_pre_exec, &$middle_post_exec) {
114+
$inner_middleware = function (ServerRequestInterface $request, ResponseInterface $response, callable $next = null) {
124115
$counter = $request->getAttribute('counter');
125116

126117
if (empty($counter)) {
@@ -129,21 +120,21 @@ public function testRequestAttributes()
129120
$request = $request->withAttribute('counter', $counter + 1);
130121
}
131122

123+
$this->assertSame(2, $request->getAttribute('counter'));
124+
132125
if (is_callable($next)) {
133126
/** @var ServerRequestInterface $request */
134127
$response = $next($request, $response);
135128
}
136129

137-
$counter = $request->getAttribute('counter');
138-
139-
if (empty($counter)) {
140-
$request = $request->withAttribute('counter', 1);
141-
} else {
142-
$request = $request->withAttribute('counter', $counter + 1);
143-
}
130+
$request = $request->withAttribute('counter', $request->getAttribute('counter') + 1);
131+
$this->assertSame(3, $request->getAttribute('counter'));
144132

145133
return $response;
146-
});
134+
};
135+
136+
$stack->addMiddleware($inner_middleware);
137+
$stack->addMiddleware($outer_middleware);
147138

148139
$response = (new Response())->withHeader('X-Testing-MiddewareStack', 'yes!');
149140

@@ -153,6 +144,6 @@ public function testRequestAttributes()
153144
$this->assertInstanceOf(ResponseInterface::class, $response);
154145
$this->assertEquals('yes!', $response->getHeaderLine('X-Testing-MiddewareStack'));
155146

156-
$this->assertEquals(4, $request->getAttribute('counter'));
147+
$this->assertEmpty($request->getAttribute('counter'));
157148
}
158149
}

0 commit comments

Comments
 (0)