> Что происходит при несовпадении типов и как происходит проверка типов в PHP (PHP)

Уровень: middle · Роль: backend · Язык: PHP · Категория: Технические вопросы

Компании: vanta

Стек: PHP

> Пример ответа

В PHP проверка типов происходит динамически, но с версии 7.0 введена строгая типизация для объявлений типов. При несовпадении типов поведение зависит от контекста:

  1. Нестрогий режим (по умолчанию): PHP пытается автоматически привести значение к ожидаемому типу. Например, если функция ожидает int, а передана строка "123", она будет преобразована в число 123. Если преобразование невозможно (например, "abc" в int), значение станет 0 или вызовет ошибку уровня E_WARNING в PHP 8+.

  2. Строгий режим (declare(strict_types=1)): PHP выбрасывает TypeError при любом несоответствии типов, без попыток приведения. Например, передача строки вместо целого числа вызовет фатальную ошибку.

  3. Проверка типов выполняется:

    • Для параметров функций и методов (начиная с PHP 5).
    • Для возвращаемых значений (с PHP 7).
    • Для свойств классов (с PHP 7.4).
    • Встроенные функции также проверяют типы, но в нестрогом режиме могут приводить их.

Пример:

PHP
function add(int $a, int $b): int {
return $a + $b;
}
// В нестрогом режиме: add("5", "10") вернет 15.
// В строгом режиме: add("5", "10") вызовет TypeError.

Кроме того, с PHP 8.0 введены union-типы (например, int|string), а с PHP 8.1 - intersection-типы, что расширяет гибкость проверки.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью