以下作品(也包括对象等):
$b = new stdClass();
$b->a = "foo";
$b->b = "bar";
$example = function () use ($b) {
echo $b->b;
};
$example();
是否存在一些语法技巧,用于传递一些对象属性/数组成员并同时将其分配给新变量而不在外部作用域中定义此变量?
这个伪代码示例应该证明我的意思:
$b = new stdClass();
$b->a = "foo";
$b->b = "bar";
$example = function () use ($b->b as $prop) {
echo $prop;
};
$example();
为什么不将它定义为参数并用它来完成?你要做的是究竟什么功能正常。
例如。并完全遵循您在问题中提出的用例:
$example = function ($prop) {
echo $prop;
};
$example($b->b);
当然,如果要修改变量,只需将其声明为通过引用传递:
$anotherExample = function (&$prop) {
echo $prop;
};
use
没有做你想做的事,也没有太多意义。简单地将参数传递给函数,这是函数的基本性质,解决了这个“问题”。
如果你指的是在闭包的'use'子句声明中采取该行动,我相信答案是否定的。所有'use'子句都允许您对(a)已在父作用域内驻留的变量进行闭包访问。
如果你想通过'use'来修改你所包含的变量的实际值,你可以通过引用传递它来修改外部范围中的原始值,但据我所知,在内部不允许任何赋值。 'use'子句语句允许您创建一个在闭包范围内可访问的新变量,该变量具有外部作用域中原始变量的值。