Функции
20 минФункции — это переиспользуемые блоки кода. Вместо того чтобы копировать один и тот же код в разных местах, вы пишете его один раз в функции и вызываете её когда нужно.
Зачем нужны функции?
Представьте, что вам нужно форматировать цену в 50 разных местах сайта. Без функций:
- Копируете код 50 раз
- Если нужно изменить формат — меняете в 50 местах
- Легко ошибиться и забыть где-то обновить
С функцией:
- Пишете код один раз
- Вызываете функцию где нужно
- Изменение в одном месте применяется везде
Создание и вызов функции
Функция создаётся ключевым словом function, а вызывается по имени с круглыми скобками:
camelCase: calculateTotal, getUserById, sendEmail.
Параметры — входные данные
Параметры позволяют передать данные в функцию. Функция становится универсальной — один код работает с разными данными.
Параметр vs Аргумент:
- Параметр — переменная в объявлении функции (
$name) - Аргумент — конкретное значение при вызове (
"Иван")
Значения по умолчанию
Параметрам можно задать значения по умолчанию. Если аргумент не передан — используется дефолтное значение:
function test($a = 1, $b) — ошибка!
Возврат значения (return)
Функция может не только выполнять действия, но и возвращать результат. Для этого используется return.
Важно: После return выполнение функции прекращается. Код после return не выполнится.
Типизация (PHP 7+)
Можно указать какие типы данных принимает и возвращает функция. Это помогает избежать ошибок:
int, float, string, bool, array, object, mixed (любой), void (ничего не возвращает)
Область видимости переменных
Переменные имеют область видимости — место, где они доступны. Это важно понимать, чтобы избежать ошибок:
- Локальные переменные — создаются внутри функции и доступны только в ней
- Глобальные переменные — создаются вне функций, но по умолчанию внутри функций НЕ доступны
global — это считается плохой практикой. Лучше передавайте данные через параметры и возвращайте через return.
Анонимные функции (замыкания)
Анонимная функция — это функция без имени. Её можно сохранить в переменную или передать как аргумент другой функции.
Практический пример
Объединим всё вместе — создадим полезную функцию форматирования цены:
- Одна функция = одна задача
- Понятное имя, описывающее что делает функция
- Не более 3-4 параметров
- Возвращает результат через return, а не выводит напрямую