在匿名 PHP 函数中从父作用域访问变量

phpserver side programmingprogramming

可以使用 ‘use’ 关键字将变量绑定到特定函数的作用域中。

使用 use 关键字将变量绑定到函数的作用域 −

示例

<?php
$message = 'hello there';
$example = function () {
   var_dump($message);
};
$example();
$example = function () use ($message) { // 继承 $message
   var_dump($message);
};
$example();
// 继承变量的值来自函数定义时的值,而不是调用时的值
$message = '继承值';
$example();
$message = '重置为 hello'; //消息已重置
$example = function () use (&$message) { // 通过引用继承
   var_dump($message);
};
$example();
// 父作用域中更改的值
// 反映在函数调用中
$message = '更改反映在父作用域中';
$example();
$example("hello message");
?>

输出

将产生以下输出 −

NULL string(11) "hello there" string(11) "hello there" string(14) "reset to hello" string(32) "changereflective in parent scope" string(32) "changereflective in parent scope"

最初,‘example’函数被第一次调用。第二次,$message 被继承,其值在函数定义时发生更改。$message 的值被重置并再次继承。由于该值在根/父作用域中发生更改,因此在调用函数时会反映更改。


相关文章