Не попадитесь на накрученные каналы! Узнайте, не накручивает ли канал просмотры или подписчиков Проверить канал на накрутку
Прикрепить Телеграм-аккаунт Прикрепить Телеграм-аккаунт

Телеграм канал «Библиотека собеса по PHP | вопросы с собеседований»

Библиотека собеса по PHP | вопросы с собеседований
1.4K
543
705
50
3.2K
Вопросы с собеседований по PHP и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9f3affba

Для обратной связи: @proglibrary_feeedback_bot
Подписчики
Всего
3 073
Сегодня
-3
Просмотров на пост
Всего
404
ER
Общий
13.13%
Суточный
11.23%
Динамика публикаций
Telemetr - сервис глубокой аналитики
телеграм-каналов
Получите подробную информацию о каждом канале
Отберите самые эффективные каналы для
рекламных размещений, по приросту подписчиков,
ER, количеству просмотров на пост и другим метрикам
Анализируйте рекламные посты
и креативы
Узнайте какие посты лучше сработали,
а какие хуже, даже если их давно удалили
Оценивайте эффективность тематики и контента
Узнайте, какую тематику лучше не рекламировать
на канале, а какая зайдет на ура
Попробовать бесплатно
Показано 7 из 1 357 постов
Смотреть все посты
Пост от 26.10.2026 15:01
83
0
2
❓ Почему переименование параметра может сломать вызовы с именованными аргументами?

Ответ: Потому что с PHP 8 имя параметра используется при связывании именованного аргумента с параметром функции.

Допустим, есть функция findUser(int $userId), а клиент вызывает findUser(userId: 42). Если переименовать параметр в $id, позиционный вызов findUser(42) продолжит работать. Но прежний именованный вызов завершится ошибкой Unknown named parameter $userId, если функция не принимает этот аргумент через вариативный параметр.

Порядок и тип параметра при этом могли вообще не измениться. Ломается именно обращение по старому имени.

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

Поэтому имена параметров публичного API стоит учитывать при оценке обратной совместимости, а не считать их исключительно внутренней деталью.

Подробнее в документации PHP

🐸 Библиотека собеса по PHP
Пост от 25.10.2026 20:01
139
0
0
📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше.

В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.

Например, можно совместить два направления по работе с ИИ:

💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.

💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.

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

А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога.

Акция действует до 31 октября включительно ⏳

⏮️ Пора прокачать свой стек
Пост от 25.10.2026 15:04
44
0
0
❓ Почему try вокруг создания генератора может не поймать исключение из его тела?

Ответ: Потому что вызов функции-генератора создаёт объект Generator, а выполнение её тела начинается при запуске или обходе генератора.

Представьте, что функция содержит проверку файла, затем yield. Вы обернули только получение генератора в try, а foreach разместили после catch. Если проверка файла выбросит исключение при начале обхода, этот catch его уже не перехватит.

Даже код, записанный до первого yield, относится к отложенному выполнению тела генератора. Чтобы обработать его исключения, нужно охватить try и ту часть программы, которая запускает или продолжает обход.

Но не все ошибки откладываются. Вычисление аргументов и проверка их типов происходят при вызове и могут завершиться ошибкой сразу.

Если проверку нужно выполнить именно в момент вызова, можно вынести её в обычную функцию-обёртку, которая после проверки вернёт генератор.

Подробнее в документации PHP

🐸 Библиотека собеса по PHP
Пост от 24.10.2026 15:03
80
0
0
❓ Перехватит ли catch (Exception) ошибку TypeError?

Ответ: Нет. TypeError не наследуется от Exception — он наследуется от Error.

В PHP 7 и новее Exception и Error образуют две отдельные ветки, которые реализуют общий интерфейс Throwable. Поэтому catch (Exception $e) перехватит исключения из ветки Exception, но пропустит TypeError.

Если обработчику действительно нужно принимать обе категории, используют catch (Throwable $e). Если требуется обработать только ошибку типов, можно явно указать catch (TypeError $e).

Например, строгая проверка аргумента обнаружила несовместимый тип. Обработчик Exception не сработает, а обработчик TypeError или Throwable — сработает.

При этом Throwable не превращает любой сбой процесса в перехватываемое исключение. И перехват ошибки типов не означает, что её стоит скрыть: часто она указывает на дефект программы, который нужно исправить.

Подробнее в документации PHP

🐸 Библиотека собеса по PHP
❤ 3
Пост от 23.10.2026 15:03
150
0
2
❓ Почему callable можно использовать для параметра, но нельзя для типа свойства?

Ответ: Потому что PHP не поддерживает callable как тип свойства. Объявление public callable $handler недопустимо, хотя параметр функции с типом callable разрешён.

Одна из причин ограничения — возможность вызова зависит от контекста доступа. Например, массив с объектом и именем его private-метода может быть вызываемым внутри класса, но недоступным для вызова снаружи.

Поэтому недостаточно однажды проверить значение при записи в свойство и считать, что оно будет вызываемым в любом месте программы.

Для хранения обработчика можно использовать свойство типа Closure. Переданный callable при необходимости преобразуют через Closure::fromCallable(). Полученное замыкание сохраняет возможность вызова с учётом контекста, в котором оно было создано.

С PHP 8.1 доступен и синтаксис создания вызываемого объекта первого класса, например $object->method(...). Правила видимости при его создании всё равно действуют.

Подробнее в документации PHP

🐸 Библиотека собеса по PHP
Пост от 22.10.2026 20:10
78
0
0
😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция!

До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.

Например, можно совместить:

💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.

💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.


Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥

Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога.

Акция действует до 31 октября включительно ⏳

⏬ Собрать свой учебный билд
Пост от 22.10.2026 15:02
258
0
2
❓ В каком файле strict_types определяет проверку аргументов функции?

Ответ: Для проверки скалярных аргументов обычного прямого вызова важен файл, из которого вызывают функцию.

Допустим, функция sum(int $value) объявлена в файле с declare(strict_types=1). Если вызвать sum('42') из другого файла без строгого режима, числовая строка может быть преобразована в int. Одного strict_types рядом с объявлением недостаточно, чтобы сделать все внешние вызовы строгими.

Если же strict_types включён в вызывающем файле, такая строка приведёт к TypeError. При этом int разрешено передавать в параметр float даже в строгом режиме.

Для возвращаемого значения правило другое: режим определяется файлом, где объявлена функция.

Строгая типизация не заменяет проверку входных данных и не меняет правила операторов сравнения. Здесь речь именно о проверке объявленных скалярных типов.

Подробнее в документации PHP

🐸 Библиотека собеса по PHP
Смотреть все посты