🧱 Суть

Функции в 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

🔗 Связано