multi-store/vendor/overtrue/easy-sms/src/Exceptions/NoGatewayAvailableException.php

82 lines
1.6 KiB
PHP

<?php
/*
* This file is part of the overtrue/easy-sms.
*
* (c) overtrue <i@overtrue.me>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Overtrue\EasySms\Exceptions;
use Throwable;
/**
* Class NoGatewayAvailableException.
*
* @author overtrue <i@overtrue.me>
*/
class NoGatewayAvailableException extends Exception
{
/**
* @var array
*/
public $results = [];
/**
* @var array
*/
public $exceptions = [];
/**
* NoGatewayAvailableException constructor.
*
* @param array $results
* @param int $code
* @param \Throwable|null $previous
*/
public function __construct(array $results = [], $code = 0, Throwable $previous = null)
{
$this->results = $results;
$this->exceptions = \array_column($results, 'exception', 'gateway');
parent::__construct('All the gateways have failed. You can get error details by `$exception->getExceptions()`', $code, $previous);
}
/**
* @return array
*/
public function getResults()
{
return $this->results;
}
/**
* @param string $gateway
*
* @return mixed|null
*/
public function getException($gateway)
{
return isset($this->exceptions[$gateway]) ? $this->exceptions[$gateway] : null;
}
/**
* @return array
*/
public function getExceptions()
{
return $this->exceptions;
}
/**
* @return mixed
*/
public function getLastException()
{
return end($this->exceptions);
}
}