PHP - Difference between 'use()' or 'global' to access a global variable in a closure?

99封情书 提交于 2019-12-04 07:37:06

There is an important difference between your two examples:

$global_variable = 1;

$closure = function() use ($global_variable) {
    return $global_variable; 
};

$closure2 = function() {
    global $global_variable;
    return $global_variable;
};

$global_variable = 99;

echo $closure();    // this will show 1
echo $closure2();   // this will show 99 

use takes the value of $global_variable during the definition of the closure while global takes the current value of $global_variable during execution.

global inherits variables from the global scope while use inherits them from the parent scope.

Usekeyword are in parent scope, while global and $GLOBALS are from everywhere.

That's mean if you use global you may not know if the value have changed, from where by what and what is the kind of the change.

You have more control by using use. So it depends on your needs.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!