diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 9a76f43..0d3326a 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -12,15 +12,7 @@ - kernel->handle($sfRequest); - - $sfResponse->send(); - })]]> + diff --git a/src/frankenphp-symfony/src/Runner.php b/src/frankenphp-symfony/src/Runner.php index aabf279..0de2c89 100644 --- a/src/frankenphp-symfony/src/Runner.php +++ b/src/frankenphp-symfony/src/Runner.php @@ -22,22 +22,25 @@ public function __construct(private HttpKernelInterface $kernel) public function run(): int { + $kernel = $this->kernel; $server = array_filter($_SERVER, static fn (string $key) => !str_starts_with($key, 'HTTP_'), ARRAY_FILTER_USE_KEY); $server['APP_RUNTIME_MODE'] = 'web=1&worker=1'; - do { - $ret = \frankenphp_handle_request(function () use ($server, &$sfRequest, &$sfResponse): void { - // Merge the environment variables coming from DotEnv with the ones tight to the current request - $_SERVER += $server; + $handler = static function () use ($kernel, $server, &$sfRequest, &$sfResponse): void { + // Merge the environment variables coming from DotEnv with the ones tied to the current request + $_SERVER += $server; + + $sfRequest = Request::createFromGlobals(); + $sfResponse = $kernel->handle($sfRequest); - $sfRequest = Request::createFromGlobals(); - $sfResponse = $this->kernel->handle($sfRequest); + $sfResponse->send(); + }; - $sfResponse->send(); - }); + do { + $ret = \frankenphp_handle_request($handler); - if ($this->kernel instanceof TerminableInterface && $sfRequest && $sfResponse) { - $this->kernel->terminate($sfRequest, $sfResponse); + if ($kernel instanceof TerminableInterface && $sfRequest && $sfResponse) { + $kernel->terminate($sfRequest, $sfResponse); } gc_collect_cycles();