Сигнатура — публичное обещание
Имя функции сообщает намерение, типы ограничивают форму данных, а возвращаемое значение даёт следующий шаг. Не передавайте массив options, если функция на самом деле требует три известных параметра: явная сигнатура обнаружит ошибку раньше и упростит переименование.
Значение по умолчанию является частью поведения. Не добавляйте его только ради сокращения вызова: читатель должен понимать, почему пропущенный timezone означает именно UTC, а отсутствие лимита не запускает бесконечную выборку.
Чистое ядро и эффекты
Callback должен сохранять смысл
array_map удобен, когда каждому элементу соответствует один результат. array_filter выбирает элементы, reduce сворачивает набор в значение. Если callback меняет внешнюю переменную, пишет в файл или зависит от текущего времени, название операции перестаёт описывать реальное поведение.
First-class callable помогает передавать существующую функцию без обёртки. Но цепочка анонимных функций не обязана быть понятнее цикла. Выбирайте форму, в которой явно видны порядок, тип промежуточного значения и обработка ошибки.
Pipe operator в PHP 8.5
<?php
$normalizedName = $rawName
|> trim(...)
|> collapseWhitespace(...)
|> normalizeExerciseName(...);Возврат нельзя терять
PHP 8.5 добавляет атрибут NoDiscard для API, где игнорирование результата похоже на ошибку. Такой сигнал полезен для immutable-операций: метод withTimezone создаёт новый объект, а не меняет старый. Атрибут не заменяет хорошее имя и тесты, но делает опасный вызов заметнее.
Исключение подходит для нарушения контракта или невозможности продолжить сценарий. Ожидаемое отсутствие результата часто лучше представить null или отдельным Result-типом — выбор зависит от того, является ли отсутствие нормальным исходом.
Лабораторная работа
Постройте чистый конвейер нормализации названия упражнения и расчёта недельного объёма. Сначала реализуйте его совместимо с PHP 8.4, затем покажите эквивалентную запись через |> как необязательный вариант 8.5.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- php.nethttps://www.php.net/releases/8.5/en.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/manual/en/migration85.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .