Позже эти данные будут обработаны при отлове исключения.
Что-то вроде
Код: Выделить всё
throw new MoneyException(['cost' => $cost, 'overflow' => true]);
Код: Выделить всё
class MoneyException extends \Exception
{
public $error;
public function __construct(array $error)
{
parent::__construct();
$this->error = $error;
}
}
Ведь конструктор переписан, и уже нельзя создать исключение "по-старому".
Код: Выделить всё
throw new MoneyException('Big bad overflow');
Если строго следовать LSP, то класс должен выглядеть так
Код: Выделить всё
class MoneyException extends \Exception
{
public $error;
public function __construct($message = null, $code = 0, Exception $previous = null, array $error = [])
{
parent::__construct();
$this->error = $error;
}
}
Код: Выделить всё
throw new MoneyException(null, 0, null, ['cost' => $cost, 'overflow' => true]);
Кто что думает? Можно так нарушать?