我在使用匿名函数的使用发现use关键字 ,他的作用是连接闭包和外界变量,闭包可以保存所在代码块上下文的一些变量和值。
后来我有个疑问,global不是也可以代替use?(使用关键字“global”你就可以把全局数据导入到一个函数的局部范围内)
但其实他们是有区别的,请看下面的代码
<?php
$str = $str2= "hello";
$fun = function () use ($str){
$str = $str." world";//使用use传递进来的变量
global $str2;//使用global
$str2 = $str2." world";
};
$fun();
echo $str;
echo "<br>";
echo $str2;
echo "<br>";
?>
结果:
hello
hello world
结论:
使用use并不会影响全局变量,只会作用于方法中;而使用global则会将变量值给改变。这就是use和global的区别