🧱 Суть
Функции в PHP – это блоки кода, которые выполняют определённую задачу и могут принимать данные через параметры и возвращать результат.
function sum($a, $b) {
return $a + $b;
}PHP также поддерживает анонимные функции (Closure) – функции без имени, которые можно сохранить в переменную или передать как значение.
$multiply = function($a, $b) {
return $a * $b;
};📦 Проблема
1. Дублирование кода
Без функций одинаковую логику приходится писать несколько раз.
echo $price * 1.2;
echo $price * 1.2;2. Сложно переиспользовать логику
Код становится большим и плохо поддерживаемым.
3. Непонимание анонимных функций
В современных PHP-проектах часто используются callback-функции:
array_map(function($item) {
return $item * 2;
}, $numbers);✅ Решение
Выносить повторяющийся код в функции и использовать Closure там, где нужна временная логика или передача поведения.
💻 Код
Обычные функции
Создание функции:
function greet() {
echo "Hello";
}Вызов:
greet();Функция с параметрами:
function greet($name) {
echo "Hello, $name";
}
greet("Alex");Функция с возвращаемым значением:
function sum($a, $b) {
return $a + $b;
}
$result = sum(5, 10);Типизация функций
PHP позволяет указывать типы параметров:
function sum(int $a, int $b): int {
return $a + $b;
}Здесь:
int– тип параметров: int– тип возвращаемого значения
Значения по умолчанию
Параметры могут иметь стандартное значение:
function greet($name = "Guest") {
echo $name;
}Вызов:
greet();Результат:
GuestПередача аргументов
По значению – копия значения передаётся в функцию:
function change($value) {
$value = 10;
}Оригинальная переменная не изменится.
По ссылке – используется &:
function change(&$value) {
$value = 10;
}Теперь изменяется исходная переменная.
Анонимные функции (Closure)
Анонимная функция не имеет имени:
$hello = function() {
echo "Hello";
};
$hello();Она хранится в переменной как обычное значение.
Передача функций как аргументов
Функции в PHP можно передавать в другие функции:
function calculate($callback) {
return $callback(5);
}
$result = calculate(function($value) {
return $value * 2;
});Результат:
10Использование Closure с массивами
Частый сценарий:
$numbers = [1, 2, 3];
$result = array_map(function($number) {
return $number * 2;
}, $numbers);Результат:
[2, 4, 6]Захват внешних переменных (use)
По умолчанию Closure не видит внешние переменные:
$message = "Hello";
$fn = function() {
echo $message;
};Ошибка.
Для доступа используется use:
$message = "Hello";
$fn = function() use ($message) {
echo $message;
};Стрелочные функции
Короткая запись Closure:
$sum = fn($a, $b) => $a + $b;Эквивалент:
$sum = function($a, $b) {
return $a + $b;
};Стрелочные функции автоматически получают внешние переменные:
$value = 10;
$fn = fn($x) => $x + $value;🎯 Вывод
- функции позволяют переиспользовать код
- параметры передают данные внутрь функции
returnвозвращает результат- Closure – это анонимная функция, которую можно хранить и передавать
- callback-функции широко используются в PHP
useпозволяет получить доступ к внешним переменным- стрелочные функции (
fn) – короткая запись Closure