Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про PHP: strict, types

Чем отличается поведение кода с declare(strict_types=1) и без него?

Этот вопрос проверяет знание строгого режима типизации и его влияние на вызовы функций.

Короткий ответ

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

Длинный ответ

Как работает strict_types в PHP

declare(strict_types=1) делает типы параметров и возвращаемых значений строгими.

1. Механизм работы

Определение: Strict types — это режим, при котором PHP запрещает автоматическое приведение типов при передаче аргументов.

Действует только в файле, где объявлен.

2. Отличия от обычного режима

  • Без strict_types
    PHP приводит типы автоматически.
    php

    function sum(int $a, int $b) { return $a + $b; }
    echo sum("3", 4); // работает
    
  • Со strict_types
    Передача строки вызовет ошибку:
    php

    declare(strict_types=1);
    
    function sum(int $a, int $b) { return $a + $b; }
    echo sum("3", 4); // TypeError
    

3. На что влияет strict_types

  • Только на скалярные типы (int, float, string, bool).

  • Не влияет на объекты — они проверяются и так строго.

  • Влияет только на вызовы функций внутри данного файла.

4. Зачем он нужен

  • уменьшение скрытых ошибок

  • повышение прозрачности кода

  • более строгий контракт API

5. Вывод

Использование strict_types=1 рекомендуется в проектах, где важна надёжность и предсказуемость поведения.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • PHP

    PHP

Ключевые слова

#strict

#types

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.