是否可以继承父范围成员 属性 并将其分配给 "use" 语句中的内部变量?
Is it possible to inherit a parent scope member property and assign it to a inner variable in the "use" statement?
以下作品(也有对象等):
$b = new stdClass();
$b->a = "foo";
$b->b = "bar";
$example = function () use ($b) {
echo $b->b;
};
$example();
是否有一些语法技巧可以传递一些对象 property/array 成员并将其同时分配给一个新变量,而无需在外部范围中定义该变量?
这个伪代码示例应该证明我的意思:
$b = new stdClass();
$b->a = "foo";
$b->b = "bar";
$example = function () use ($b->b as $prop) {
echo $prop;
};
$example();
如果您指的是在闭包的 'use' 子句语句中执行该操作,我认为答案是否定的。 'use' 子句所做的就是让您的闭包访问已经驻留在父范围内的 (a) 变量。
如果您想修改通过 'use' 包含的变量的实际值,您可以通过引用传递它以修改外部作用域中的原始值,但据我所知该 'use' 子句语句内部不允许赋值,允许您创建一个在闭包范围内可访问的新变量,该变量具有外部范围内原始变量的值。
为什么不把它定义为一个参数就可以了?您正在尝试做的正是函数正常执行的操作。
例如并完全遵循您在问题中提出的用例:
$example = function ($prop) {
echo $prop;
};
$example($b->b);
当然,如果要修改变量,只需要声明为引用传递即可:
$anotherExample = function (&$prop) {
echo $prop;
};
use
不会做您想做的事,也没有多大意义。简单地将参数传递给函数,这是函数的基本性质,解决了这个"issue".
以下作品(也有对象等):
$b = new stdClass();
$b->a = "foo";
$b->b = "bar";
$example = function () use ($b) {
echo $b->b;
};
$example();
是否有一些语法技巧可以传递一些对象 property/array 成员并将其同时分配给一个新变量,而无需在外部范围中定义该变量?
这个伪代码示例应该证明我的意思:
$b = new stdClass();
$b->a = "foo";
$b->b = "bar";
$example = function () use ($b->b as $prop) {
echo $prop;
};
$example();
如果您指的是在闭包的 'use' 子句语句中执行该操作,我认为答案是否定的。 'use' 子句所做的就是让您的闭包访问已经驻留在父范围内的 (a) 变量。
如果您想修改通过 'use' 包含的变量的实际值,您可以通过引用传递它以修改外部作用域中的原始值,但据我所知该 'use' 子句语句内部不允许赋值,允许您创建一个在闭包范围内可访问的新变量,该变量具有外部范围内原始变量的值。
为什么不把它定义为一个参数就可以了?您正在尝试做的正是函数正常执行的操作。
例如并完全遵循您在问题中提出的用例:
$example = function ($prop) {
echo $prop;
};
$example($b->b);
当然,如果要修改变量,只需要声明为引用传递即可:
$anotherExample = function (&$prop) {
echo $prop;
};
use
不会做您想做的事,也没有多大意义。简单地将参数传递给函数,这是函数的基本性质,解决了这个"issue".