我有一个像这样的配置文件:
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"
为什么对类方法的调用已解决,但闭包不是<?p?
答案 0 :(得分:2)
日期已解决,因为在配置文件中执行了Carbon的 toDateString()。 foo 未解决,因为您只需为 foo 指定一个闭包,因此 foo 的值是闭包。如果你希望 foo 等于闭包返回的值,你需要执行clojure。
答案 1 :(得分:0)
我知道这已经很晚了,但是,正如我刚遇到这个问题,这就是我所做的:
return [
'foo' => (function() {
return 1;
})(),
'date' => Carbon::now()->toDateString()
];
这将当场评估封口。