2017-03-08 120 views
0

我是匿名函數世界的新手。在php中匿名函數的參數

$this->app->singleton(VideoServiceInterface::class, function($app) { 
     statement1; 
     statement2; 
     .........  
    }); 

我遇到了上面的代碼片段。我真的不知道參數的來源以及編碼器是如何將它傳遞給匿名函數的?

回答

1

嗯,首先,您需要考慮將匿名函數作爲在另一個上下文中執行某些語句的門。

這是一種顛倒函數聲明的方式 - 所以說 - 。

例如,這裏是聲明/調用一個函數的傳統方式:

// Declare a function . 
function foo($parameter) 
{ 
    // here we are executing some statements 

} 

// Calling the function 
echo foo(); 
在匿名函數的情況下

,我們正在某處調用該函數,並移動在聲明函數到客戶端的責任用戶。例如,您正在編寫一個新包,並且在特定情況下,您不希望將包作爲具體對象執行,從而爲客戶用戶提供更多權力來聲明和執行某些語句以適合他的需求。

function foo($parameter, $callback) 
{ 
    echo $parameter . "\n"; 

    // here we are calling the function 
    // leaving the user free to declare it 
    // to suit his needs 
    $callback($parameter); 
} 

// here the declaration of the function 
echo foo('Yello!', function ($parameter) { 
    echo substr($parameter, 0, 3); 
}); 
在你的榜樣

,如果你瀏覽$this->app->singleton方法,是屬於app對象的源代碼,你會發現一個首位,而其通常被稱爲callback功能 - 所謂的某個地方。

0

$app只是訪問什麼是傳遞給函數的參數,你可以使用$a$b或任何就像一個正常的用戶定義的函數:

​​3210

singleton()方法接受類型的參數callable這是一個字符串函數名或匿名函數。

singleton()方法會將一些東西傳遞給該函數,該函數可以在上面的示例中使用$app$variable