Чистая функция - функция без побочных эффектов, результат зависит только от аргументов:
// Чистая - всегда одинаковый результат для одинаковых входных данных
function add(int $a, int $b): int {
return $a + $b;
}
// Нечистая - зависит от внешнего состояния
function getUser(int $id): User {
return DB::find($id); // побочный эффект: обращение к БД
}
// Нечистая - модифицирует внешнее состояние
function logMessage(string $msg): void {
file_put_contents('log.txt', $msg); // побочный эффект
}Преимущества: легко тестировать, кешировать (memoize), распараллеливать, понимать.