Всем привет! В этом материале рассмотрим, как работать с группой исключений в PHP 7.1 .

Что нового в PHP7.1: работа с группой исключений.

Всем привет! В этом материале рассмотрим, как работать с группой исключений в PHP 7.1.

Давайте рассмотрим такой код:

class OneException extends Exception {}
class TwoException extends Exception {}
class ThreeException extends Exception {}
class FourException extends Exception {}

class Five {
  public function func($id) {
   if(true) {
    throw new OneException;
   } else {
    throw new FourException;
   }
  }
}

$object = new Five;
$error = null;

try {
  $object->func('123');
} catch(OneException $e) {
  $error = 'Извините, произошла ошибка';
} catch(TwoException $e) {
  $error = 'Извините, произошла ошибка';
} catch(ThreeException $e) {
  $error = 'Извините, произошла ошибка';
} catch(FourException $e) {
  $error = 'Неправильно введен идентификатор';
}

exit('перенаправление с ошибкой: '.$error);

Как можно видеть в коде выше, он избыточен. А ведь мы просто делаем следующее: создаем объект класса Five и вызываем его метод с нужным параметром. Если у нас будет исключение номер 1, 2 или 3, то пишем одно сообщение. Если же исключение номер 4, то – другое сообщение.

Чтобы сократить код и сделать его более понятным, в PHP 7.1 было сделано следующее улучшение: мы теперь можем писать исключения через прямую палочку :) Т.е. теперь мы можем переписать наш код вот так:

try {
  $object->func('123');
} catch(OneException | TwoException | ThreeException $e) {
  $error = 'Извините, произошла ошибка';
} catch(FourException $e) {
  $error = 'Неправильно введен идентификатор';
}

Код стал заметно меньше, но функционал остался тем же. Если вы его запустите, то получите первое сообщение. Если же вы теперь в методе поменяете true на false, то получите второе сообщение.

Вот такая простая мелочь, но теперь работа с PHP стала намного приятнее, быстрее и легче.

Спасибо за внимание!