2015-04-28 75 views
6

我想寫一些嵌套的PHP anonymus函數,結構是你看到下面和我的問題是:我怎樣才能使它工作沒有錯誤?嵌套匿名函數

$abc = function($code){ 

    $function_A = function($code){ 
     return $code; 
    }; 

    $function_B = function($code){ 
     global $function_A; 
     $text = $function_A($code); 
     return $text; 
    }; 

    $function_B($code); 

}; 

echo $abc('abc'); 

輸出爲致命錯誤:函數名必須在此行的字符串

$text = $function_A($code); 

此消息不說什麼我:(

+1

'$ function_A'沒有在全球範圍內定義。 – AbraCadaver

+1

'$ function_A'在外部函數的局部變量範圍中定義,而不是全局。另請參見[參考:什麼是變量作用域,哪些變量可以從哪裏訪問,什麼是「未定義變量」錯誤?](http://stackoverflow.com/q/16959576) – mario

回答

10

的東西在這裏您的$function_A未在全球範圍內定義,但在$abc的範圍內。如果您想要,您可以嘗試使用use以便將您的$function_A傳遞到的範圍:

$abc = function($code){ 

    $function_A = function($code){ 
     return $code; 
    }; 

    $function_B = function($code) use ($function_A){ 
     $text = $function_A($code); 
     return $text; 
    }; 

    $function_B($code); 

}; 
2

在PHP中,通過比$this其他和變量超全局到您必須使用use聲明匿名關閉。

<?php 

$abc = function($code){ 

    $function_A = function($code){ 
     return "Code: {$code}"; 
    }; 

    $function_B = function($code) use ($function_A) { 
     $text = $function_A($code); 
     return $text; 
    }; 

    return $function_B($code); 
}; 

echo $abc('abc'); 

這裏有一個工作示例:http://3v4l.org/u1CtZ