Muuttuja ennen nimetöntä funktiota PHP:ssä
Oletetaan, että meillä on seuraava koodi:
<?php
$pow = 2;
$func = function($num) use ($pow)
{
return $num ** $pow;
};
echo $func(4);
?>
Yllä oleva koodi toimii,
koska muuttuja $pow
on kirjoitettu ennen funktion määrittelyä.
Kuitenkin, jos asetamme muuttujan määrittelyn
ennen funktion kutsua,
kaikki lakkaa toimimasta:
<?php
$func = function($num) use ($pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Ongelman voi korjata välittämällä muuttujan viittauksena:
<?php
$func = function($num) use (&$pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Korjaa koodi, jotta se toimii suunnitellulla tavalla:
<?php
$func = function() use ($num1, $num2)
{
return $num1 + $num2;
};
$num1 = 2;
$num2 = 3;
echo $func();
?>