getOption('memory-limit') === null) { $processCommandArray[] = '-d'; $processCommandArray[] = 'memory_limit=' . ini_get('memory_limit'); } $turboExtension = TurboExtensionSelector::findExtensionForWorkers(); if ($turboExtension !== null) { $processCommandArray[] = '-d'; // quote value so PHP will parse it as a string when the path contains a bitwise operator like ~ $processCommandArray[] = 'extension=' . escapeshellarg("'" . $turboExtension . "'"); } foreach ([$mainScript, $commandName] as $arg) { $processCommandArray[] = escapeshellarg($arg); } if ($projectConfigFile !== null) { $processCommandArray[] = '--configuration'; $processCommandArray[] = escapeshellarg($projectConfigFile); } $options = [ AnalyseCommand::OPTION_LEVEL, 'autoload-file', 'memory-limit', 'xdebug', 'verbose', ]; foreach ($options as $optionName) { /** @var bool|string|null $optionValue */ $optionValue = $input->getOption($optionName); if (is_bool($optionValue)) { if ($optionValue === true) { $processCommandArray[] = sprintf('--%s', $optionName); } continue; } if ($optionValue === null) { continue; } $processCommandArray[] = sprintf('--%s=%s', $optionName, escapeshellarg($optionValue)); } $processCommandArray = array_merge($processCommandArray, $additionalItems); $processCommandArray[] = '--'; /** @var string[] $paths */ $paths = $input->getArgument('paths'); foreach ($paths as $path) { $processCommandArray[] = escapeshellarg($path); } return implode(' ', $processCommandArray); } }