Я на самом деле экспериментирую с функциональным программированием в php. Я хотел бы иметь некоторую точность в отношении некоторых вызовов функций.
В качестве примера:
function addition($num1){
return function ($num2) use ($num1){
return $num1+$num2;
}
}
$add_2_to = addition(2);
echo $add_2_to(3);
echo $add_2_to(4);
Есть ли способ вызвать функцию сложения со всеми параметрами?
Я попытался таким образом без шансов:
echo addition(2)(3);
Вы довольно близко PHP не имеет лексической области видимости, поэтому переменная $ num1 недоступна в возвращаемой функции … для этого вы должны явно импортировать ее, используя use
function addition($num1){
return function ($num2) use ($num1){
return $num1*$num2;
};
}
$add_2_to = addition(2);
echo $add_2_to(3);
echo $add_2_to(4);
Синтаксис, который вы предложили echo addition(2)(3);
в настоящее время не будет работать, но когда php 7 прибудет, это будет. Для текущих версий php вы можете использовать call_user_func, чтобы делать то, что вы хотите.
echo call_user_func(addition(2), 3);
Других решений пока нет …