PHP Closures scoping of variables

后端 未结 3 1206
没有蜡笔的小新
没有蜡笔的小新 2021-01-18 16:15

I am looking at the PHP example of Closures on http://us1.php.net/manual/en/functions.anonymous.php

It provides the example code below and states:

相关标签:
3条回答
  • 2021-01-18 16:34

    You're misunderstanding the function signature. $quantity and $product are the regular arguments that will be passed into the function when it's called, they indeed do not exist in the parent scope and aren't meant to. use ($tax, &$total) are the closed over variables from the parent scope.

    $foo = 'foo';             // closed over variable
                              // vvvv
    $func = function ($bar) use ($foo) {
                   // ^^^^
                   // regular function argument
    
        return $foo . $bar;
    };
    
    echo $func('baz');  // "foobaz"
    
    0 讨论(0)
  • 2021-01-18 16:42

    The two variable is question are what get passed into the callback by array_walk.

    The first parameter will be passed as the value of each of the elements in the array, the second will be the key of the array.

    The closed over variables are the ones referenced in the use clause.

    0 讨论(0)
  • 2021-01-18 16:45

    The closure arguments $quantity and $product do not exist per se in the function definition, they are just placeholders that array_walk will fill with real values during its execution procedure. The use arguments are extra variables that you import into the array_walk call's scope that otherwise would not be available to the function.

    0 讨论(0)
提交回复
热议问题