master

laravel/framework

Last updated at: 29/12/2023 09:24

ProcessResult.php

TLDR

The ProcessResult.php file in the Illuminate\Process namespace contains a class called ProcessResult that implements the ProcessResultContract interface. It provides methods for interacting with the result of a process execution, including getting the command executed, checking if the process was successful, getting the output and error output, and throwing exceptions if the process failed.

Methods

command()

This method returns the original command executed by the process.

successful()

This method determines if the process was successfully executed. It returns a boolean value.

failed()

This method determines if the process failed. It returns a boolean value.

exitCode()

This method returns the exit code of the process.

output()

This method returns the standard output of the process as a string.

seeInOutput(string $output)

This method determines if the output of the process contains the given string. It takes a string parameter and returns a boolean value.

errorOutput()

This method returns the error output of the process as a string.

seeInErrorOutput(string $output)

This method determines if the error output of the process contains the given string. It takes a string parameter and returns a boolean value.

throw(callable $callback = null)

This method throws an exception of type ProcessFailedException if the process failed. It optionally takes a callback function as a parameter that can be used to customize the exception handling.

throwIf(bool $condition, callable $callback = null)

This method throws an exception of type Throwable if the process failed and the given condition is true. It takes a boolean condition and an optional callback function as parameters.

Classes

There are no additional classes in this file.

<?php

namespace Illuminate\Process;

use Illuminate\Contracts\Process\ProcessResult as ProcessResultContract;
use Illuminate\Process\Exceptions\ProcessFailedException;
use Symfony\Component\Process\Process;

class ProcessResult implements ProcessResultContract
{
    /**
     * The underlying process instance.
     *
     * @var \Symfony\Component\Process\Process
     */
    protected $process;

    /**
     * Create a new process result instance.
     *
     * @param  \Symfony\Component\Process\Process  $process
     * @return void
     */
    public function __construct(Process $process)
    {
        $this->process = $process;
    }

    /**
     * Get the original command executed by the process.
     *
     * @return string
     */
    public function command()
    {
        return $this->process->getCommandLine();
    }

    /**
     * Determine if the process was successful.
     *
     * @return bool
     */
    public function successful()
    {
        return $this->process->isSuccessful();
    }

    /**
     * Determine if the process failed.
     *
     * @return bool
     */
    public function failed()
    {
        return ! $this->successful();
    }

    /**
     * Get the exit code of the process.
     *
     * @return int|null
     */
    public function exitCode()
    {
        return $this->process->getExitCode();
    }

    /**
     * Get the standard output of the process.
     *
     * @return string
     */
    public function output()
    {
        return $this->process->getOutput();
    }

    /**
     * Determine if the output contains the given string.
     *
     * @param  string  $output
     * @return bool
     */
    public function seeInOutput(string $output)
    {
        return str_contains($this->output(), $output);
    }

    /**
     * Get the error output of the process.
     *
     * @return string
     */
    public function errorOutput()
    {
        return $this->process->getErrorOutput();
    }

    /**
     * Determine if the error output contains the given string.
     *
     * @param  string  $output
     * @return bool
     */
    public function seeInErrorOutput(string $output)
    {
        return str_contains($this->errorOutput(), $output);
    }

    /**
     * Throw an exception if the process failed.
     *
     * @param  callable|null  $callback
     * @return $this
     *
     * @throws \Illuminate\Process\Exceptions\ProcessFailedException
     */
    public function throw(callable $callback = null)
    {
        if ($this->successful()) {
            return $this;
        }

        $exception = new ProcessFailedException($this);

        if ($callback) {
            $callback($this, $exception);
        }

        throw $exception;
    }

    /**
     * Throw an exception if the process failed and the given condition is true.
     *
     * @param  bool  $condition
     * @param  callable|null  $callback
     * @return $this
     *
     * @throws \Throwable
     */
    public function throwIf(bool $condition, callable $callback = null)
    {
        if ($condition) {
            return $this->throw($callback);
        }

        return $this;
    }
}