Что нового в PHP7.1: новые сообщения об ошибках.
Всем привет! В этой статье мы рассмотрим, как изменились сообщения об ошибках в PHP 7.1.
Как известно, если мы что-то делаем не так в языке программирования PHP, то получим ошибку. Например, если мы не передали в функцию требуемый аргумент, то у нас будет Fatal Error. Однако эти ошибки недостаточно информативны и их сложно воспринимать. Поэтому в PHP 7.1 они были изменены и улучшены. Как говорится, они стали более User Friendly.
Давайте рассмотрим обозначенный выше пример:
class User {
public function avatar($size) {
return 'avatar.jpg?s='.$size;
}
}
$user = new User;
echo $user->avatar();
Как и говорилось выше, в наш метод avatar требуется передать размер изображения, но мы этого не делаем. В PHP 7.0 мы получим следующее сообщение:
Warning: Missing argument 1 for User::avatar(), called in ...
Полностью приводить сообщение я не стал, т.к. в этом нет особого смысла. Все, что нас интересует, это то, что у нас пропущен 1 аргумент для метода avatar() в классе User.
Если мы этот же код запустим в PHP 7.1, то получим более понятное и информативное сообщение об ошибке:
Fatal error: Uncaught ArgumentCountError: Too few arguments to function User::avatar(), 0 passed in ... and exactly 1 expected in ...
Как вы можете видеть, здесь написано, что передано слишком мало аргументов в метод avatar() класса User, 0 прошло на такой-то строчке(где надо было передать аргументы) и точно 1 ожидался на такой-то строчке(где написан сам метод).
Что интересно, если мы добавим еще один параметр и установим для него значение по умолчанию
class User {
public function avatar($size, $default = 'default') {
return 'avatar.jpg?s='.$size;
}
}
$user = new User;
echo $user->avatar();
то сообщение изменится. Оно будет выглядеть так:
Fatal error: Uncaught ArgumentCountError: Too few arguments to function User::avatar(), 0 passed in ... and at least 1 expected in ...
Здесь написано то же самое, что и раньше, но слово exactly заменено на at least, т.е. теперь сообщение говорит нам о том, что не точно один аргумент ожидается, а хотя бы один. Это произошло из-за того, что у нас для второго параметра установлено значение по умолчанию, следовательно, мы можем его не передавать, и тогда будет использоваться именно оно.
Помимо того, что сообщения теперь стали более понятными и информативными, они еще и выглядеть стали красивее!
А на этом сегодня все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.