Skip to content

Commit 297ba46

Browse files
authored
Merge pull request #8 from legionth/use-arguments-variable-in-callback
Use arguments variable in callback instead of query parameters
2 parents 6142a3a + 640922b commit 297ba46

File tree

4 files changed

+17
-19
lines changed

4 files changed

+17
-19
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,16 @@ the request to following endpoint.
5959
To add dynamic values in the REST API definition the operator `:` can be used
6060

6161
```php
62-
$server->post('/say/:word', function (\Psr\Http\Message\ServerRequestInterface $request, callable $next) {
63-
$word = $request->getQueryParams()['word'];
62+
$server->post('/say/:word', function (\Psr\Http\Message\ServerRequestInterface $request, callable $next, array $parameters) {
63+
$word = $parameters['word'];
6464

6565
return new \React\Http\Response(200, array(), 'You said: ' . $word);
6666
});
6767
```
6868

6969
Now a HTTP client can call the address e.g. `http://localhost:8080/say/hello`.
70-
The key `word` and value `hello` will be stored in query parameters of the
71-
PSR-7 request.
70+
The key `word` and value `hello` will be stored in the third
71+
parameter of the callback function.
7272

7373
There is no type check her that can validate which API should be used.
7474
`/say/:word` and`/say/:number` would be the same. In this case the order of your API

examples/01-define-api.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
require_once '../vendor/autoload.php';
3+
require __DIR__ . '/../vendor/autoload.php';
44

55
$loop = \React\EventLoop\Factory::create();
66

@@ -10,8 +10,8 @@
1010
return new \React\Http\Response(200, array(), 'hello');
1111
});
1212

13-
$server->post('/say/:word', function (\Psr\Http\Message\ServerRequestInterface $request, callable $next) {
14-
$word = $request->getQueryParams()['word'];
13+
$server->post('/say/:word', function (\Psr\Http\Message\ServerRequestInterface $request, callable $next, array $arguments) {
14+
$word = $arguments['word'];
1515

1616
return new \React\Http\Response(200, array(), 'You said: ' . $word);
1717
});

src/Server.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,19 +103,17 @@ private function createRestfulFunction($httpMethod, $path, $function)
103103
return $next($request);
104104
}
105105

106-
$queryParams = $request->getQueryParams();
106+
$argument = array();
107107

108108
foreach ($pathArray as $id => $valueName) {
109109
$position = strpos($valueName, ':');
110110
if (0 === $position) {
111111
$valueName = substr($valueName, 1);
112-
$queryParams[$valueName] = $requestPathArray[$id];
112+
$argument[$valueName] = $requestPathArray[$id];
113113
}
114114
}
115115

116-
$request = $request->withQueryParams($queryParams);
117-
118-
return $function($request, $next);
116+
return $function($request, $next, $argument);
119117
}
120118

121119
return $next($request);

tests/ServerTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,16 @@ public function testCreateGetEndpointOnTestServerAndSendRequest()
5959
$this->assertSame('example.com', $requestAssertion->getHeaderLine('Host'));
6060
}
6161

62-
public function testCreatePostEndpointOnTestServerAndSendRequestWithQueryParameter()
62+
public function testCreatePostEndpointOnTestServerAndSendRequestWithAdditionalParameter()
6363
{
6464
$requestAssertion = null;
6565
$idAssertion = null;
6666

6767
$server = new Server();
6868

69-
$server->post('/user/add/:id', function (ServerRequestInterface $request, callable $next) use (&$requestAssertion, &$idAssertion) {
69+
$server->post('/user/add/:id', function (ServerRequestInterface $request, callable $next, array $paramters) use (&$requestAssertion, &$idAssertion) {
7070
$requestAssertion = $request;
71-
$idAssertion = $request->getQueryParams()['id'];
71+
$idAssertion = $paramters['id'];
7272
});
7373

7474
$server->listen($this->socket);
@@ -86,18 +86,18 @@ public function testCreatePostEndpointOnTestServerAndSendRequestWithQueryParamet
8686
$this->assertEquals('10', $idAssertion);
8787
}
8888

89-
public function testCreatePutEndpointOnTestServerAndSendRequestWithQueryParameters()
89+
public function testCreatePutEndpointOnTestServerAndSendRequestWithParameters()
9090
{
9191
$requestAssertion = null;
9292
$idAssertion = null;
9393
$nameAssertion = null;
9494

9595
$server = new Server();
9696

97-
$server->put('/user/add/:id/group/:name', function (ServerRequestInterface $request, callable $next) use (&$requestAssertion, &$idAssertion, &$nameAssertion) {
97+
$server->put('/user/add/:id/group/:name', function (ServerRequestInterface $request, callable $next, array $parameters) use (&$requestAssertion, &$idAssertion, &$nameAssertion) {
9898
$requestAssertion = $request;
99-
$idAssertion = $request->getQueryParams()['id'];
100-
$nameAssertion = $request->getQueryParams()['name'];
99+
$idAssertion = $parameters['id'];
100+
$nameAssertion = $parameters['name'];
101101
});
102102

103103
$server->listen($this->socket);

0 commit comments

Comments
 (0)