在这个例子中:
$foo = function () use (){
// ^---------^ what is the use?
}
除此之外我们可以使用use ()
部分将数据导入到函数中,就像常规函数一样:
function bar ($foo){
}
但我不明白function ()
部分可以用于什么?
答案 0 :(得分:6)
例如:
$a = 1;
$foo = function ($b, $c) use ($a)
{
echo $a . PHP_EOL;
echo $b . PHP_EOL;
echo $c . PHP_EOL;
};
$foo(2, 3);
$a = 5;
$foo(7, 8);
输出:
1
2
3
1
7
8
$ b,$ c - 将是您在执行时传递的参数。 创建时绑定/导入 $ a 。因此,如果你在$ foo定义之后改变它,它就不会改变。
答案 1 :(得分:2)
参数块用于输入参数。所以,如果我定义
$foo = function($bar) use ($baz) {
return $bar + $baz;
}
然后我说,将$foo
传递给另一个函数或将其绑定到另一个类,我可以这样做
function bonk($bar, $foo) {
$baz = 4;
return $foo($bar);
}
以及其他地方的电话
// Returns 7
bonk(3, $foo);
一个允许你从上下文中获取变量,而另一个必须传入。例如,我在定义$ bonk的类中可以使用$ baz,所以我将其传入,但我不是但是知道$ bar将会是什么,直到bonk被传入其他地方并被传入其中。
好吧,让我们说我是一个名为Cats的课程,我有一个对象SiameseCat可供我使用。我有一个名为doTheThing的方法,它接受一个函数和一个参数。它告诉猫该做什么以及可选择做什么。因此它总是有相同的猫,但取决于我从哪里调用它,我可以让暹罗猫对不同的名词做不同的动词,但我知道它是我的猫做的,因为那是我定义的地方那只猫。