php - 具有静态值的 Laravel 请求宏
问题描述
我试图在请求宏中创建一个延迟加载模式,该模式将缓存请求生命周期的值。
我把它放在我的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()
它返回'是空的'。
我的问题有两个:
- 我应该如何完成这个模式?
- 为什么它不像写的那样工作?
解决方案
我发现我可以通过这种方式完成模式:
Request::macro('foo', function() {
if (! isset(request()->bar)) {
request()->bar = 'was not null';
return 'was null';
}
return request()->bar;
});
不过,我还没有找到#2 的答案。
推荐阅读
- ruby - 无法读取文件字符集 utf-16le,除非放入 ruby
- reactjs - ReactJS:调用 fetch() 时未陷入承诺
- python-3.x - 根据文件大小python将一个大文件拆分为多个文件
- java - 无法连接到 MariaDB
- c# - 对所有 PageModel 授权?
- php - 向 Controller 发送 Ajax 请求时出错,它不是 json 类型
- python - OpenCV中的纯gui窗口底部有黑色矩形和裁剪文本
- java - com.fasterxml.jackson.core.JsonParseException:意外字符('\'(代码 92))[Java]
- ruby-on-rails - 使用 spree-multi-domain 在单个应用程序集成中为特定商店提供 Spree 产品
- java - Spring MVC - 从我的控制器读取文件