Biến trước khi gọi hàm ẩn danh trong PHP
Giả sử chúng ta có đoạn mã sau:
<?php
$pow = 2;
$func = function($num) use ($pow)
{
return $num ** $pow;
};
echo $func(4);
?>
Đoạn mã ở trên hoạt động,
vì biến $pow
được viết trước khi khai báo hàm.
Tuy nhiên, nếu chúng ta đặt khai báo
biến trước khi gọi hàm,
mọi thứ sẽ ngừng hoạt động:
<?php
$func = function($num) use ($pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Có thể sửa lỗi bằng cách truyền biến bằng tham chiếu:
<?php
$func = function($num) use (&$pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Sửa mã để nó hoạt động theo cách dự định:
<?php
$func = function() use ($num1, $num2)
{
return $num1 + $num2;
};
$num1 = 2;
$num2 = 3;
echo $func();
?>