|
2 | 2 |
|
3 | 3 | namespace Bref\DevServer; |
4 | 4 |
|
5 | | -use Bref\Bref; |
6 | | -use Nyholm\Psr7\Factory\Psr17Factory; |
7 | | -use Nyholm\Psr7Server\ServerRequestCreator; |
8 | | -use Symfony\Component\Yaml\Yaml; |
9 | | -use Whoops\Handler\PrettyPageHandler; |
10 | | -use Whoops\Run; |
| 5 | +use Symfony\Component\Process\Process; |
11 | 6 |
|
12 | 7 | class DevServer |
13 | 8 | { |
14 | | - public function run(): bool|null |
| 9 | + public function run(): void |
15 | 10 | { |
16 | | - // Serve assets |
17 | | - if (PHP_SAPI === 'cli-server') { |
18 | | - $url = parse_url($_SERVER['REQUEST_URI']); |
19 | | - if (is_file(getcwd() . '/web' . ($url['path'] ?? ''))) return false; |
20 | | - } |
| 11 | + $handler = __DIR__ . '/server-handler.php'; |
| 12 | + $assetsDirectory = getcwd(); |
21 | 13 |
|
22 | | - $whoops = new Run; |
23 | | - $whoops->pushHandler(new PrettyPageHandler); |
24 | | - $whoops->register(); |
| 14 | + $server = new Process(['php', '-S', '127.0.0.1:8000', $handler, '-t', $assetsDirectory]); |
| 15 | + $server->setTimeout(null); |
| 16 | + $server->setTty(true); |
| 17 | + $server->setEnv([ |
| 18 | + 'PHP_CLI_SERVER_WORKERS' => 2, |
| 19 | + Handler::ASSETS_DIRECTORY_VARIABLE => $assetsDirectory, |
| 20 | + ]); |
25 | 21 |
|
26 | | - $container = Bref::getContainer(); |
| 22 | + $server->run(); |
27 | 23 |
|
28 | | - $psr17Factory = new Psr17Factory; |
29 | | - $requestFactory = new ServerRequestCreator( |
30 | | - $psr17Factory, |
31 | | - $psr17Factory, |
32 | | - $psr17Factory, |
33 | | - $psr17Factory |
34 | | - ); |
35 | | - |
36 | | - $serverlessConfig = Yaml::parseFile(getcwd() . '/serverless.yml', Yaml::PARSE_CUSTOM_TAGS); |
37 | | - $router = Router::fromServerlessConfig($serverlessConfig); |
38 | | - |
39 | | - $request = $requestFactory->fromGlobals(); |
40 | | - [$handler, $request] = $router->match($request); |
41 | | - $controller = $handler ? $container->get($handler) : new NotFound; |
42 | | - $response = $controller->handle($request); |
43 | | - (new ResponseEmitter)->emit($response); |
44 | | - |
45 | | - return null; |
| 24 | + exit($server->getExitCode()); |
46 | 25 | } |
47 | 26 | } |
0 commit comments