2015-11-15 51 views
0

我想从函数内部访问$my_var,我知道我可以使用global $my_var这样做,但是IMO不是这样做的好方法,因为如果$my_var不在call_user_func它将使用那个而不是其中的一个。我不能使用use,因为函数不是一个匿名函数。使用函数获取父变量

有没有好办法做到这一点,而不使用类?

call_user_func(function(){ 

    $my_var = null; 

    function myFunc($value1, callable $callback){ 
     // Access $my_var 
    } 

}); 

myFunc('value 1', function(){}); 
+0

_IMO是不是一个好way_ - 也不是以这种方式定义一个函数是一个好主意。 – Federkun

+0

_是否有一种不使用班级的方法?_但是为什么? – Federkun

+0

这对我来说看起来很奇怪......也许它只是我还是新来的PHP :( – Andrew

回答

-1

有几种方法。最简单的是简单地传递$var作为参数,并通过函数的返回值进行更新:

$var = null; 
function foo($var) { $var++; } 
$var = foo($var); 

另一种方法是声明参数为基准(& $var):

$var = null; 
function foo(& $var) { $var++; } 
foo($var); 

第三方法是使用一个匿名函数,并指定变量的使用

$var = null; 
$foo = function() use(& $var) { $var++; } 
$foo(); 
+0

只适用于匿名函数 –

+0

啊是的!你是对的:(我会更新。 – Kenney