Skip to content

Commit 7943d0d

Browse files
authored
Update README.md
1 parent 71319e7 commit 7943d0d

File tree

1 file changed

+48
-27
lines changed

1 file changed

+48
-27
lines changed

README.md

Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,54 +17,75 @@ See comments inside code for more details.
1717

1818
declare(strict_types=1);
1919

20+
use Phalcon\Di\Di;
2021
use Phalcon\Mvc\Micro;
2122
use Swoole\Http\Request;
2223
use Swoole\Http\Response;
2324
use Swoole\Http\Server;
2425

26+
$di = new Di();
27+
$di->setShared('router', new Router(false));
28+
29+
$app = new Micro($di);
30+
31+
/**
32+
* Define example GET endpoint with text response.
33+
*/
34+
$app->get('/', function() {
35+
return 'Hello World';
36+
});
37+
38+
/**
39+
* Define example redirect.
40+
*/
41+
$app->get('/redirect', function () {
42+
// Redirect is handled by Swoole's Request.
43+
return ['redirect' => 'https://github.com'];
44+
});
45+
46+
/**
47+
* Define example json response.
48+
*/
49+
$app->get('/json', function () {
50+
// Correct headers will be added from Swoole's Response.
51+
return ['json' => true];
52+
});
53+
2554
$http = new Server('0.0.0.0', 9501);
2655
$http->on('start', function () {
2756
echo "Swoole http server is started at http://127.0.0.1:9501\n";
2857
});
2958

30-
$http->on('request', function (Request $request, Response $response) {
31-
$app = new Micro();
32-
$app->setService('request', new \Phalcon\Bridge\Swoole\Request($request), true);
33-
$app->setService('response', new \Phalcon\Bridge\Swoole\Response($response), true);
34-
/**
35-
* We need to define our response handler, because
36-
* default Micro response handler will send output
37-
* into client, meanwhile we just want it to pass
38-
* to the Swoole's response end() method.
39-
*/
40-
$app->setResponseHandler(function () use ($app) {
41-
return $app->response->getContent();
42-
});
59+
$http->on('request', function (Request $request, Response $response) use ($app) {
60+
$app->setService('request', new \Phalcon\Bridge\Swoole\Request($request));
61+
$app->setService('response', new \Phalcon\Bridge\Swoole\Response($response));
4362

4463
/**
4564
* Without fallback 404 handler it will crush.
4665
*/
47-
$app->notFound(function () use ($app) {
48-
$app
49-
->response
50-
->setStatusCode(404, 'Not Found')
51-
->setContent('Not found');
52-
});
53-
54-
/**
55-
* Define GET endpoint.
56-
*/
57-
$app->get('/', function() use ($app) {
58-
$app
59-
->response
60-
->setContent('Hello World');
66+
$app->notFound(function () use ($response) {
67+
$response->setStatusCode(404, 'Not Found');
6168
});
6269

6370
/**
6471
* Handle in Phalcon the request and pick response content.
6572
* Then pass to Swoole and end response.
6673
*/
6774
$content = $app->handle($request->server['request_uri']);
75+
if (!empty($content['redirect'])) {
76+
$response->redirect($content['redirect'], 301);
77+
return;
78+
}
79+
80+
if (isset($content['content'])) {
81+
if (is_array($content['content'])) {
82+
$response->setHeader('Content-Type', 'application/json');
83+
$content = json_encode($content['content']);
84+
} else {
85+
$content = (string)$content['content'];
86+
}
87+
}
88+
6889
$response->end($content);
6990
});
7091

0 commit comments

Comments
 (0)