Không, chúng không được chuyển theo tham chiếu - use
tuân theo ký hiệu tương tự như thông số của hàm. Bạn có thể xác nhận điều đó một mình với sự giúp đỡ của debug_zval_dump
function (Demo):
<?php
header('Content-Type: text/plain;');
function bar(&$var)
{
$foo = function() use ($var)
{
debug_zval_dump($var);
$var++;
};
$foo();
};
$my_var = 0;
bar($my_var);
echo $my_var;
Output:
long(0) refcount(3)
0
Một toàn qua-all-phạm vi làm việc tham khảo sẽ có một refcount của 1. khi viết cho bạn đạt được điều đó bằng cách xác định dùng làm pass-by-reference:
$foo = function() use (&$var)
Nó cũng có thể tạo ra đệ quy theo cách này:
$func = NULL;
$func = function() use (&$func) {
$func();
}
không, nó sẽ không được sửa đổi .. điều này được đề cập trong hướng dẫn sử dụng –