Muutuja enne anonüümse funktsiooni väljakutset PHP-s
Oletagem, et meil on järgmine kood:
<?php
$pow = 2;
$func = function($num) use ($pow)
{
return $num ** $pow;
};
echo $func(4);
?>
Ülaltoodud kood töötab,
kuna muutuja $pow
on kirjutatud enne funktsiooni deklareerimist.
Kui aga paneme muutuja deklaratsiooni
enne funktsiooni väljakutset,
lõpetab kõik töötamise:
<?php
$func = function($num) use ($pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Probleemi saab parandada, kui edastada muutuja viidena:
<?php
$func = function($num) use (&$pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Parandage kood, et see töötaks kavandatud viisil:
<?php
$func = function() use ($num1, $num2)
{
return $num1 + $num2;
};
$num1 = 2;
$num2 = 3;
echo $func();
?>