猿问

具有静态值的 Laravel 请求宏

我试图在 Request 宏中创建一个延迟加载模式,该模式将在请求的生命周期内缓存值。


我把它放在我的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()它返回“为空”。


我的问题有两个:

  1. 我应该如何完成这个模式?

  2. 为什么它不像写的那样工作?


慕标琳琳
浏览 115回答 1
1回答

慕尼黑8549860

我发现我可以通过这种方式完成模式:Request::macro('foo', function() {    if (! isset(request()->bar)) {        request()->bar = 'was not null';        return 'was null';    }    return request()->bar;});不过,我还没有找到#2 的答案。
随时随地看视频慕课网APP
我要回答