Выбор ответа Junior Типы и строгая типизация спрашивают часто обновлено

Что делает declare(strict_types=1)

Вопрос

Что изменит declare(strict_types=1); в начале файла?

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

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

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

Коротко

Правильный ответ: Вызовы из этого файла не приводят скаляры: будет TypeError. Строгий режим влияет на проверку скалярных типов параметров и возвращаемых значений в вызовах, сделанных из этого файла.

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

  1. Все переменные в файле должны иметь объявленный тип
  2. Вызовы из этого файла не приводят скаляры: будет TypeErrorправильный ответ
  3. Сравнение == в этом файле начнёт работать как ===
  4. Режим включится для всего проекта, если подключить файл первым

Разбор

Строгий режим влияет на проверку скалярных типов параметров и возвращаемых значений в вызовах, сделанных из этого файла. Без него function f(int $x) при f("5") молча приведёт строку. В строгом режиме будет TypeError (исключение: int допускается там, где ждут float). Переменные в PHP не типизируются, == остаётся нестрогим, а директива действует только в своём файле.

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

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