Zmienna przed wywołaniem funkcji anonimowej w PHP
Załóżmy, że mamy następujący kod:
<?php
$pow = 2;
$func = function($num) use ($pow)
{
return $num ** $pow;
};
echo $func(4);
?>
Powyższy kod działa,
ponieważ zmienna $pow
jest zapisana przed deklaracją funkcji.
Jednakże, jeśli umieścimy deklarację
zmiennej przed wywołaniem funkcji,
wszystko przestanie działać:
<?php
$func = function($num) use ($pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Można naprawić problem, jeśli przekażemy zmienną przez referencję:
<?php
$func = function($num) use (&$pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Popraw kod, aby działał w zamierzony sposób:
<?php
$func = function() use ($num1, $num2)
{
return $num1 + $num2;
};
$num1 = 2;
$num2 = 3;
echo $func();
?>