Laravel 请求具有静态值的宏
Laravel Request Macro With Static Values
我试图在请求宏中创建一个延迟加载模式,该模式将在请求的生命周期内缓存值。
我把它放在我的 App\Providers\RouteServiceProvider
boot()
函数中:
Request::macro('foo', function() {
static $bar;
if (is_null($bar)) {
$bar = 'was not null';
return 'was null';
}
return $bar;
});
每次我调用 request()->foo()
或 Request::foo()
它 returns 'was null'.
我的问题有两个:
- 我应该如何完成这个模式?
- 为什么它不像写的那样工作?
我发现我可以通过这种方式完成模式:
Request::macro('foo', function() {
if (! isset(request()->bar)) {
request()->bar = 'was not null';
return 'was null';
}
return request()->bar;
});
不过,我还没有找到问题 2 的答案。
我试图在请求宏中创建一个延迟加载模式,该模式将在请求的生命周期内缓存值。
我把它放在我的 App\Providers\RouteServiceProvider
boot()
函数中:
Request::macro('foo', function() {
static $bar;
if (is_null($bar)) {
$bar = 'was not null';
return 'was null';
}
return $bar;
});
每次我调用 request()->foo()
或 Request::foo()
它 returns 'was null'.
我的问题有两个:
- 我应该如何完成这个模式?
- 为什么它不像写的那样工作?
我发现我可以通过这种方式完成模式:
Request::macro('foo', function() {
if (! isset(request()->bar)) {
request()->bar = 'was not null';
return 'was null';
}
return request()->bar;
});
不过,我还没有找到问题 2 的答案。