Чистая функция (Pure Function) – это функция, которая всегда возвращает один и тот же результат при одинаковых входных данных и не изменяет внешние переменные (отсутствуют побочные эффекты).
📌 Основные принципы чистых функций
- Детерминированность – функция всегда возвращает одинаковый результат для одинаковых аргументов.
- Отсутствие побочных эффектов – функция не изменяет глобальные переменные, файлы, базу данных и другие внешние ресурсы.
- Легко тестировать – поскольку функция зависит только от своих аргументов, её легко проверить.
🔹 Примеры чистых и нечистых функций
✅ Пример чистой функции
function sum($a, $b) {
return $a + $b;
}
echo sum(5, 3); // 8
echo sum(5, 3); // 8 (всегда один и тот же результат)
📌 Эта функция чистая, так как:
- Она не использует внешние переменные.
- Она не изменяет состояние программы.
- Она всегда возвращает один и тот же результат при одинаковых аргументах.
❌ Пример нечистой функции
$total = 0;
function addToTotal($num) {
global $total;
$total += $num;
return $total;
}
echo addToTotal(5); // 5
echo addToTotal(5); // 10 (результат изменился!)
📌 Эта функция НЕ чистая, потому что:
- Она зависит от внешней переменной
$total. - При каждом вызове с одинаковым аргументом она возвращает разный результат.
🔹 Почему использовать чистые функции?
✅ Проще тестировать – чистые функции не зависят от внешних данных.
✅ Проще отлаживать – всегда предсказуемый результат.
✅ Проще писать функциональный код – можно использовать array_map(), array_filter(), array_reduce().
🔹 Применение чистых функций в PHP
Используем array_map() с чистой функцией:
$numbers = [1, 2, 3, 4, 5];
function power ($n) {
return $n * $n;
}
$squared = array_map('power', $numbers);
print_r($squared);
Вывод:
Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
Функция power чистая, так как не меняет внешние переменные.
Итог
✔ Чистая функция – всегда предсказуема и не влияет на внешний мир.
✔ Нечистая функция – может изменять глобальные переменные, файлы, БД.
✔ Чистые функции делают код более читаемым и надежным.