Automattic\WooCommerce\Vendor\GraphQL\Error

FormattedError::toSafeTracepublic staticWC 1.0

Returns error trace as serializable array.

Method of the class: FormattedError{}

No Hooks.

Returns

Array. array{

file?: string,
line?: int,
function?: string,
call?: string,

}>

Usage

$result = FormattedError::toSafeTrace( $error ): array;
$error(Throwable) (required)
.

FormattedError::toSafeTrace() code WC 10.9.1

public static function toSafeTrace(\Throwable $error): array
{
    $trace = $error->getTrace();

    if (
        isset($trace[0]['function']) && isset($trace[0]['class'])
        // Remove invariant entries as they don't provide much value:
        && ($trace[0]['class'] . '::' . $trace[0]['function'] === 'Automattic\WooCommerce\Vendor\GraphQL\Utils\Utils::invariant')
    ) {
        array_shift($trace);
    } elseif (! isset($trace[0]['file'])) {
        // Remove root call as it's likely error handler trace:
        array_shift($trace);
    }

    $formatted = [];
    foreach ($trace as $err) {
        $safeErr = [];

        if (isset($err['file'])) {
            $safeErr['file'] = $err['file'];
        }

        if (isset($err['line'])) {
            $safeErr['line'] = $err['line'];
        }

        $func = $err['function'];
        $args = array_map([self::class, 'printVar'], $err['args'] ?? []);
        $funcStr = $func . '(' . implode(', ', $args) . ')';

        if (isset($err['class'])) {
            $safeErr['call'] = $err['class'] . '::' . $funcStr;
        } else {
            $safeErr['function'] = $funcStr;
        }

        $formatted[] = $safeErr;
    }

    return $formatted;
}