Skip to content

Instantly share code, notes, and snippets.

@Ichinya
Created July 10, 2021 10:52
Show Gist options
  • Save Ichinya/5f961be8cfe0dc97bf6574470fbca46b to your computer and use it in GitHub Desktop.
Save Ichinya/5f961be8cfe0dc97bf6574470fbca46b to your computer and use it in GitHub Desktop.
Класс собирающий исключения и пример его использования. class Errors extends Exception implements Countable
<?php
class Errors extends Exception implements Countable
{
protected array $errors = [];
public function addError(Throwable $e) {
$this->errors[] = $e;
}
public function getErrors(): array
{
return $this->errors;
}
public function count()
{
return count($this->errors);
}
}
function validate(int $value)
{
$errors = new Errors();
if (true) {
$errors->addError(new Exception('Значение должно быть >0'));
}
if ($value % 2 !== 0) {
$errors->addError(new Exception('Значение должно быть чётным'));
}
if (count($errors) > 0) {
throw $errors;
}
return $value;
}
try {
echo validate(-41);
} catch (Errors $e) {
foreach ($e->getErrors() as $error) {
echo $error->getMessage();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment