PHP use() function for scope?

前端 未结 2 951
春和景丽
春和景丽 2020-12-10 13:24

I have seen code like this:

function($cfg) use ($connections) {}

but php.net doesn\'t seem to mention that function. I\'m guessing it\'s re

相关标签:
2条回答
  • 2020-12-10 14:00

    use is not a function, it's part of the Closure syntax. It simply makes the specified variables of the outer scope available inside the closure.

    $foo = 42;
    
    $bar = function () {
        // can't access $foo in here
        echo $foo; // undefined variable
    };
    
    $baz = function () use ($foo) {
        // $foo is made available in here by use()
        echo $foo; // 42
    }
    

    For example:

    $array = array('foo', 'bar', 'baz');
    $prefix = uniqid();
    
    $array = array_map(function ($elem) use ($prefix) {
        return $prefix . $elem;
    }, $array);
    
    // $array = array('4b3403665fea6foo', '4b3403665fea6bar', '4b3403665fea6baz');
    
    0 讨论(0)
  • 2020-12-10 14:00

    It is telling the anonymous function to make $connections (a parent variable) available in its scope.

    Without it, $connections wouldn't be defined inside the function.

    Documentation.

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