public function phpComposer(array $composer_command, $opts = [
        'remote-binary-path' => 'composer',
        'remote-working-dir' => '/var/www/html',
    ])
    {
        /** @var DrupalProjectType $project */
        $instance = $this->getProjectInstance();

        $engine = ProjectX::getEngineType();
        $binary = $opts['remote-binary-path'];
        $command_str = escapeshellcmd(implode(' ', $composer_command));
        $working_dir = escapeshellarg($opts['remote-working-dir']);

        $command = $this->taskExec("{$binary} --working-dir={$working_dir} {$command_str}");

        if ($engine instanceof DockerEngineType) {
            $container = $instance->getPhpServiceName('php');
            $result = $this->taskDockerComposeExecute()
                ->setContainer($container)
                ->exec($command)
                ->run();
        } else {
            $result = $command->run();
        }
        $this->validateTaskResult($result);

        return $this;
    }