Что такое type hinting в PHP?

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

Ответ

Type hinting (подсказки типов) в PHP — это механизм указания ожидаемых типов данных для параметров функций, возвращаемых значений и свойств классов. Он помогает предотвратить ошибки, улучшает читаемость кода и обеспечивает лучшую поддержку в IDE.

Основные возможности:

  • Скалярные типы (с PHP 7.0): int, float, string, bool
  • Составные типы: array, iterable, callable, object
  • Nullable-типы (с PHP 7.1): ?string (означает string|null)
  • Объединённые типы (с PHP 8.0): string|int
  • Подсказки для свойств (с PHP 7.4): private string $name;

Примеры использования:

// Строгая типизация включается в начале файла
declare(strict_types=1);

// Типы для параметров и возвращаемого значения
function calculateTotal(float $price, int $quantity): float {
    return $price * $quantity;
}

// Nullable-тип и объединённый тип
function processUser(?string $name, string|int $id): void {
    // ...
}

// Типизированные свойства класса
class User {
    private string $email;
    private ?DateTime $birthDate;

    public function __construct(string $email) {
        $this->email = $email;
    }
}

Важные особенности:

  1. Без strict_types=1 PHP будет пытаться привести значения к указанным типам
  2. Со strict_types=1 передача значения неверного типа вызовет TypeError
  3. Type hinting работает во время выполнения, а не только на этапе анализа кода
  4. Это особенно полезно в больших проектах и при работе в команде