Kintamasis prieš iškvietiant anoniminę funkciją PHP
Tarkime, kad turime tokį kodą:
<?php
$pow = 2;
$func = function($num) use ($pow)
{
return $num ** $pow;
};
echo $func(4);
?>
Aukščiau pateiktas kodas veikia,
nes kintamasis $pow
yra parašytas prieš funkcijos deklaravimą.
Tačiau jei mes pastatysime kintamojo
deklaravimą prieš funkcijos iškvietimą,
visas kodas nustos veikti:
<?php
$func = function($num) use ($pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Problemą galima išspręsti, jei perduosime kintamąjį nuoroda:
<?php
$func = function($num) use (&$pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Pataisykite kodą, kad jis veiktų numatytuoju būdu:
<?php
$func = function() use ($num1, $num2)
{
return $num1 + $num2;
};
$num1 = 2;
$num2 = 3;
echo $func();
?>