PHPにおける無名関数呼び出し前の変数
以下のようなコードがあるとします:
<?php
$pow = 2;
$func = function($num) use ($pow)
{
return $num ** $pow;
};
echo $func(4);
?>
上記のコードが動作するのは、変数 $pow が
関数の宣言前に記述されているためです。
しかし、変数の宣言を関数の呼び出し前に
置いてしまうと、すべて動作しなくなります:
<?php
$func = function($num) use ($pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
参照渡しにすることでこの問題を修正できます:
<?php
$func = function($num) use (&$pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
コードが意図した通りに動作するように修正してください:
<?php
$func = function() use ($num1, $num2)
{
return $num1 + $num2;
};
$num1 = 2;
$num2 = 3;
echo $func();
?>