Выбор ответа Junior Исключения и ошибки обновлено

TypeError и строгий режим

Вопрос

Функция объявлена как function add(int $a, int $b): int. Что будет при add("5", "x") без strict_types?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: TypeError: "x" нельзя привести к int. В нестрогом режиме PHP приведёт числовую строку "5" к int, но нечисловую "x" привести не может и бросит TypeError.

Варианты ответа

  1. TypeError: "x" нельзя привести к intправильный ответ
  2. Вернёт 5, а "x" молча станет нулём
  3. Вернёт строку "5x" после конкатенации
  4. Предупреждение Warning и результат null

Разбор

В нестрогом режиме PHP приведёт числовую строку "5" к int, но нечисловую "x" привести не может и бросит TypeError. В строгом режиме упала бы уже "5". Молчаливого нуля для параметров с типом нет, это поведение только у явного приведения (int).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.