Last active
April 4, 2022 00:54
-
-
Save lotharthesavior/063d68972ed41be743e7fe7ef347ba84 to your computer and use it in GitHub Desktop.
Swoole Http Server with templating and routing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"require": { | |
"league/plates": "^3.4", | |
"slim/slim": "4.*", | |
"ilexn/swoole-convert-psr7": "^0.6.0", | |
"nyholm/psr7": "^1.5" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
require __DIR__ . '/vendor/autoload.php'; | |
use Ilex\SwoolePsr7\SwooleResponseConverter; | |
use Ilex\SwoolePsr7\SwooleServerRequestConverter; | |
use Nyholm\Psr7\Factory\Psr17Factory; | |
use Psr\Http\Message\RequestInterface; | |
use Psr\Http\Message\ResponseInterface; | |
use Slim\App; | |
use Swoole\Http\Request; | |
use Swoole\Http\Response; | |
use Swoole\Http\Server; | |
$psr17Factory = new Psr17Factory; | |
$requestConverter = new SwooleServerRequestConverter( | |
$psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory | |
); | |
$app = new App($psr17Factory); | |
$app->addRoutingMiddleware(); | |
$app->get('/', function(RequestInterface $request, ResponseInterface $response, $args){ | |
$templates = new League\Plates\Engine(__DIR__ . '/'); | |
$response->getBody()->write($templates->render('view1', ['name' => 'Something else!'])); | |
return $response; | |
}); | |
$server = new Server("0.0.0.0", 8080); | |
$server->on("start", function(Server $server) { | |
echo "HTTP Server ready at http://127.0.0.1:8080" . PHP_EOL; | |
}); | |
$server->on('request', function(Request $request, Response $response) use ($app, $requestConverter) { | |
$psr7Request = $requestConverter->createFromSwoole($request); | |
$psr7Response = $app->handle($psr7Request); | |
$converter = new SwooleResponseConverter($response); | |
$converter->send($psr7Response); | |
}); | |
$server->start(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head><title>Test Page</title></head> | |
<link rel="icon" href="data:,"><!-- This avoids errors for favicon requests --> | |
<body> | |
<h1>Hello <?php echo $name; ?></h1> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment