2015-11-15 50 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