2012-10-17 59 views
0

可能重複:
In Php 5.3.0 what is the Function 「Use」 Identifier ? Should a sane programmer use it?使用()在PHP 5.3

什麼是下面的代碼之間diffrence:

$di->set('db', function() use ($config) { 
    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
     "dbname" => $config->database->name 
    )); 
}); 

$di->set('db', function($config) { 
    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
     "dbname" => $config->database->name 
    )); 
}); 
+4

通話http://stackoverflow.com/questions/1065188/in-php-5-3-0-what-is之前宣佈的地方-the功能使用的標識符,應該-A-理智程序員我們 – Mob

回答

2

第一個讓匿名函數訪問$config。 (使用變量$config,在已定義匿名函數的範圍內) 第二個創建需要參數$ config的匿名函數。

在第二個示例中,您將使用$config,它將被傳遞給set()中某處的函數。在第一個這將是$config,這是set()

$config = "something"; 

function set($fn) { 
    $config = "anything"; 
    echo $fn($config); 
} 

set(function() use ($config) { return $config; }); //something 

set(function($config) { return $config; }); //anything