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


“use” 关键字可用于将变量绑定到特定函数作用域内。

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

示例

 实时演示

<?php
$message = 'hello there';
$example = function () {
   var_dump($message);
};
$example();
$example = function () use ($message) { // Inherit $message
   var_dump($message);
};
$example();
// Inherited variable's value is from when the function is defined, not when called
$message = 'Inherited value';
$example();
$message = 'reset to hello'; //message is reset
$example = function () use (&$message) { // Inherit by-reference
   var_dump($message);
};
$example();
// The changed value in the parent scope
// is reflected inside the function call
$message = 'change reflected in parent scope';
$example();
$example("hello message");
?>

输出

这将产生以下输出:-

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

最初,首先调用“example”函数。第二次调用时,$ message 被继承,其值在函数被定义时发生改变。$ message 的值被重置并再次继承。由于值在根/父级作用域中被改变,因此当函数被调用时这些改变会被反映出来。

更新于: 09-04-2020

483 次浏览

开启你的职业生涯

完成课程获得认证

开始吧
广告