tad\WPBrowser\Connector\WordPress::doRequestInProcess PHP Method

doRequestInProcess() public method

public doRequestInProcess ( Symfony\Component\BrowserKit\Request $request ) : Symfony\Component\BrowserKit\Response
$request Symfony\Component\BrowserKit\Request
return Symfony\Component\BrowserKit\Response
    public function doRequestInProcess($request)
    {
        if ($this->mockedResponse) {
            $response = $this->mockedResponse;
            $this->mockedResponse = null;
            return $response;
        }
        $requestCookie = $request->getCookies();
        $requestServer = $request->getServer();
        $requestFiles = $this->remapFiles($request->getFiles());
        $parseResult = parse_url($request->getUri());
        $uri = $parseResult["path"];
        if (array_key_exists("query", $parseResult)) {
            $uri .= "?" . $parseResult["query"];
        }
        $requestRequestArray = $this->remapRequestParameters($request->getParameters());
        $requestServer['REQUEST_METHOD'] = strtoupper($request->getMethod());
        $requestServer['REQUEST_URI'] = $uri;
        $requestServer['HTTP_HOST'] = $this->domain;
        $requestServer['SERVER_PROTOCOL'] = 'HTTP/1.1';
        $this->index = $this->uriToIndexMapper->getIndexForUri($uri);
        $phpSelf = str_replace($this->rootFolder, '', $this->index);
        $requestServer['PHP_SELF'] = $phpSelf;
        $env = ['headers' => $this->headers, 'cookie' => $requestCookie, 'server' => $requestServer, 'files' => $requestFiles, 'request' => $requestRequestArray];
        if (strtoupper($request->getMethod()) == 'GET') {
            $env['get'] = $env['request'];
        } else {
            $env['post'] = $env['request'];
        }
        $requestScript = dirname(dirname(__DIR__)) . '/scripts/request.php';
        $command = PHP_BINARY . ' ' . escapeshellarg($requestScript) . ' ' . escapeshellarg($this->index) . ' ' . escapeshellarg(base64_encode(serialize($env)));
        $process = new Process($command);
        $process->run();
        $rawProcessOutput = $process->getOutput();
        $unserializedResponse = unserialize(base64_decode($rawProcessOutput));
        $_SERVER = empty($unserializedResponse['server']) ? [] : $unserializedResponse['server'];
        $_FILES = empty($unserializedResponse['files']) ? [] : $unserializedResponse['files'];
        $_REQUEST = empty($unserializedResponse['request']) ? [] : $unserializedResponse['request'];
        $_GET = empty($unserializedResponse['get']) ? [] : $unserializedResponse['get'];
        $_POST = empty($unserializedResponse['post']) ? [] : $unserializedResponse['post'];
        $content = $unserializedResponse['content'];
        $headers = $this->replaceSiteUrlDeep($unserializedResponse['headers'], $this->url);
        $response = new Response($content, $unserializedResponse['status'], $headers);
        return $response;
    }