我有一个这样的配置文件:
use Carbon'Carbon;
return [
'foo' => function() {
return 1;
},
'date' => Carbon::now()->toDateString()
];
当调用Config::get('file.foo')
时,它返回以下值而不是闭包的返回值。:
>>> Config::get('file.foo') => Closure {#39 class: "Illuminate'Foundation'Bootstrap'LoadConfiguration", this: Illuminate'Foundation'Bootstrap'LoadConfiguration {#33 …}, file: "/App/config/file.php", line: "6 to 8", }
,
Config::get('file.date');
返回>>> Config::get('file.date') => "2015-08-04"
为什么对类方法的调用解决了,但闭包没有?
date被解析,因为Carbon的toDateString()在配置文件中执行。foo没有解析,因为您刚刚为foo分配了一个闭包,所以foo的值就是闭包。如果你想让foo等于闭包返回的值,你需要执行clojure。
我知道这有点晚了,但是,因为我刚碰到这个问题,这就是我所做的:
return [
'foo' => (function() {
return 1;
})(),
'date' => Carbon::now()->toDateString()
];
将当场计算闭包。