Что будет, если Junior разработчик назовёт псевдо-типы?

«Что будет, если Junior разработчик назовёт псевдо-типы?» — вопрос из категории Софт-скиллы, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

На собеседовании я бы рассказал о своём опыте изучения системы типов PHP. Когда я только начинал, я столкнулся с понятием "псевдо-типов" (pseudo-types) в документации, таких как number или numeric. Я попытался использовать number в объявлении типа аргумента, и это закончилось фатальной ошибкой Fatal error: Uncaught TypeError.

Этот опыт заставил меня глубже разобраться. Я узнал, что:

  • number и numeric — это документационные подсказки, а не реальные типы. В коде нужно использовать объединённые типы, например int|float.
  • Некоторые псевдо-типы со временем стали реальными: iterable (с PHP 7.1), mixed (с PHP 8.0).
  • void можно использовать только как тип возвращаемого значения.

Пример из моего кода:

// Так нельзя (number - псевдо-тип)
// function calculateTax(number $amount) { ... }

// А так правильно:
function calculateTax(int|float $amount): float {
    return $amount * 0.2;
}

Эта ошибка была полезным уроком, который научил меня всегда проверять документацию на актуальность и тестировать предположения на практике.