2012-10-17 62 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